(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-c584e988"],{"8dcd":function(t,e,s){"use strict";s("c1e4")},ab43:function(t,e,s){"use strict";var a=s("23e7"),i=s("c65b"),n=s("59ed"),r=s("825a"),o=s("46c4"),c=s("c5cc"),l=s("9bdd"),u=s("2a62"),d=s("2baa"),h=s("f99f"),m=s("c430"),p=!m&&!d("map",(function(){})),g=!m&&!p&&h("map",TypeError),w=m||p||g,y=c((function(){var t=this.iterator,e=r(i(this.next,t)),s=this.done=!!e.done;if(!s)return l(t,this.mapper,[e.value,this.counter++],!0)}));a({target:"Iterator",proto:!0,real:!0,forced:w},{map:function(t){r(this);try{n(t)}catch(e){u(this,"throw",e)}return g?i(g,this,t):new y(o(this),{mapper:t})}})},c1e4:function(t,e,s){},c8a1:function(t,e,s){"use strict";s.d(e,"a",(function(){return b}));s("d9e2");var a=s("8ce4"),i=s("7b67");const n=t=>i["c"]+"consumer/tagQuestion/"+t,r=(t={})=>Object(a["a"])(n("assignment/myList"),"get",t),o=t=>Object(a["a"])(n("attempt/start"),"post_json",{assignmentId:t}),c=t=>Object(a["a"])(n("attempt/"+t),"get",{}),l=(t,e)=>Object(a["a"])(n(`attempt/${t}/draft`),"put",{answers:e}),u=(t,e)=>Object(a["a"])(n(`attempt/${t}/submit`),"post_json",e),d=(t={})=>Object(a["a"])(n("teacher/paperList"),"get",t),h=t=>Object(a["a"])(n("teacher/assignmentStudents"),"get",t),m=t=>Object(a["a"])(n("teacher/attemptDetail"),"get",{attemptId:t}),p=()=>Object(a["a"])(n("teacher/clazzList"),"get",{}),g=()=>Object(a["a"])(n("teacher/publishedPapers"),"get",{}),w=t=>Object(a["a"])(n("teacher/assignment/save"),"post_json",t),y=t=>Object(a["a"])(n("teacher/assignment/update"),"post_json",t),v=t=>Object(a["a"])(n("teacher/assignment/delete"),"post_json",{id:t});var f=s("2ca2");class b{static async call(t){const[e]=await t;if(!e||2e4!==e.code)throw new Error(e&&e.msg||"请求失败");return e.data}static async myAssignments(t=1,e=20,s=""){const a=await this.call(r({page:t,size:e,status:s}));return f["a"].generateListMybatisPlus(a)}static start(t){return this.call(o(t))}static attempt(t){return this.call(c(t))}static saveDraft(t,e){return this.call(l(t,e))}static submit(t,e){return this.call(u(t,e))}static async teacherPaperList(t=1,e=20,s={}){const a=await this.call(d(Object.assign({page:t,size:e},s)));return f["a"].generateListMybatisPlus(a)}static async assignmentStudents(t={},e=1,s=20){const a=await this.call(h(Object.assign({},t,{page:e,size:s})));return f["a"].generateListMybatisPlus(a)}static teacherAttemptDetail(t){return this.call(m(t))}static teacherClazzList(){return this.call(p())}static teacherPublishedPapers(){return this.call(g())}static teacherSaveAssignment(t){return this.call(w(t))}static teacherUpdateAssignment(t){return this.call(y(t))}static teacherDeleteAssignment(t){return this.call(v(t))}}},f665:function(t,e,s){"use strict";var a=s("23e7"),i=s("c65b"),n=s("2266"),r=s("59ed"),o=s("825a"),c=s("46c4"),l=s("2a62"),u=s("f99f"),d=u("find",TypeError);a({target:"Iterator",proto:!0,real:!0,forced:d},{find:function(t){o(this);try{r(t)}catch(a){l(this,"throw",a)}if(d)return i(d,this,t);var e=c(this),s=0;return n(e,(function(e,a){if(t(e,s++))return a(e)}),{IS_RECORD:!0,INTERRUPTED:!0}).result}})},f7fa:function(t,e,s){"use strict";s.r(e);var a=function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"answer-page",class:{"is-readonly":t.readonly}},[e("header",{staticClass:"answer-head"},[e("div",{staticClass:"head-main"},[e("h2",[t._v(t._s(t.paper.name||"题单作答"))]),e("p",{staticClass:"head-meta"},[e("span",[t._v(t._s(t.questions.length)+" 题")]),e("span",{staticClass:"dot"},[t._v("·")]),e("span",[t._v("截止 "+t._s(t.formatTime(t.assignment.endTime)))])])]),e("div",{staticClass:"save-state",class:{error:t.saveError,readonly:t.readonly&&!t.data.showResult}},[e("i",{class:t.saveIcon}),e("span",[t._v(t._s(t.saveMessage))])])]),t.offline?e("el-alert",{staticClass:"page-alert",attrs:{title:"网络不可用，答案已暂存在本机；恢复网络后会自动重传。",type:"warning",closable:!1,"show-icon":""}}):t._e(),t.readonly?e("el-alert",{staticClass:"page-alert",attrs:{title:"题单已截止或答卷已提交，当前为只读状态。",type:"info",closable:!1,"show-icon":""}}):t._e(),e("main",{staticClass:"answer-layout"},[e("nav",{staticClass:"number-nav"},[e("div",{staticClass:"nav-title"},[e("strong",[t._v("答题卡")]),e("span",{staticClass:"nav-progress"},[t._v(t._s(t.answeredCount)+"/"+t._s(t.questions.length))])]),e("div",{staticClass:"numbers"},t._l(t.questions,(function(s,a){return e("button",{key:s.questionId,class:{answered:t.answered(s),current:t.currentId===s.questionId},attrs:{type:"button",title:"第 "+(a+1)+" 题"},on:{click:function(e){return t.scrollTo(s.questionId)}}},[t._v(t._s(a+1))])})),0),t._m(0)]),e("section",{staticClass:"questions"},[t._l(t.questions,(function(s,a){return e("article",{key:s.questionId,staticClass:"question",class:{answered:t.answered(s)},attrs:{id:"question-"+s.questionId}},[e("h3",{staticClass:"q-title"},[e("span",{staticClass:"q-index"},[t._v(t._s(a+1))]),e("span",{staticClass:"q-text"},[t._v(" "+t._s(s.title)+" "),t.typeLabel(s)?e("small",{staticClass:"q-type"},[t._v(t._s(t.typeLabel(s)))]):t._e()]),e("small",{staticClass:"q-score"},[t._v(t._s(s.score)+" 分")])]),"Multiple"===s.questionType?e("el-checkbox-group",{staticClass:"choice-group",attrs:{value:t.answerArray(s.questionId),disabled:t.readonly},on:{input:e=>t.change(s.questionId,e.join(","))}},t._l(s.options,(function(a){return e("label",{key:a.key,staticClass:"choice",class:{selected:t.answerArray(s.questionId).indexOf(a.key)>=0,disabled:t.readonly}},[e("el-checkbox",{attrs:{label:a.key}},[e("span",{staticClass:"opt-key"},[t._v(t._s(a.key)+".")]),e("span",{staticClass:"opt-text"},[t._v(t._s(a.text))])])],1)})),0):e("el-radio-group",{staticClass:"choice-group",attrs:{disabled:t.readonly},on:{change:e=>t.change(s.questionId,e)},model:{value:t.answers[s.questionId],callback:function(e){t.$set(t.answers,s.questionId,e)},expression:"answers[question.questionId]"}},t._l(s.options,(function(a){return e("label",{key:a.key,staticClass:"choice",class:{selected:t.answers[s.questionId]===a.key,disabled:t.readonly}},[e("el-radio",{attrs:{label:a.key}},[e("span",{staticClass:"opt-key"},[t._v(t._s(a.key)+".")]),e("span",{staticClass:"opt-text"},[t._v(t._s(a.text))])])],1)})),0),t.data.showResult?e("div",{staticClass:"answer-result",class:t.resultFor(s.questionId).isCorrect?"correct":"wrong"},[t._v(" "+t._s(t.resultFor(s.questionId).isCorrect?"回答正确":"回答错误")+" · 参考答案 "+t._s(s.standardAnswer||"--")+" ")]):t._e()],1)})),e("div",{staticClass:"submit-bar"},[e("span",{staticClass:"submit-count"},[t._v(" 已答 "),e("b",[t._v(t._s(t.answeredCount))]),t._v(" / "+t._s(t.questions.length)+" 题 "),!t.readonly&&t.unansweredCount>0?[e("span",{staticClass:"unanswered-hint"},[t._v("（还有 "+t._s(t.unansweredCount)+" 题未答）")])]:t._e()],2),e("el-button",{attrs:{type:"primary",size:"medium",disabled:t.readonly,loading:t.submitting},on:{click:t.submit}},[t._v("提交题单")])],1)],2)]),e("button",{staticClass:"mobile-card",attrs:{type:"button"},on:{click:function(e){t.cardVisible=!0}}},[e("i",{staticClass:"el-icon-menu"}),t._v(" 答题卡 "+t._s(t.answeredCount)+"/"+t._s(t.questions.length)+" ")]),e("el-drawer",{attrs:{title:"答题卡",visible:t.cardVisible,direction:"btt",size:"46%","custom-class":"answer-card-drawer"},on:{"update:visible":function(e){t.cardVisible=e}}},[e("div",{staticClass:"drawer-progress"},[t._v("已答 "+t._s(t.answeredCount)+" / "+t._s(t.questions.length))]),e("div",{staticClass:"numbers mobile"},t._l(t.questions,(function(s,a){return e("button",{key:s.questionId,class:{answered:t.answered(s),current:t.currentId===s.questionId},attrs:{type:"button"},on:{click:function(e){t.scrollTo(s.questionId),t.cardVisible=!1}}},[t._v(t._s(a+1))])})),0),e("div",{staticClass:"legend drawer-legend"},[e("span",[e("i",{staticClass:"swatch answered"}),t._v("已答")]),e("span",[e("i",{staticClass:"swatch"}),t._v("未答")])])])],1)},i=[function(){var t=this,e=t._self._c;return e("div",{staticClass:"legend"},[e("span",[e("i",{staticClass:"swatch answered"}),t._v("已答")]),e("span",[e("i",{staticClass:"swatch"}),t._v("未答")]),e("span",[e("i",{staticClass:"swatch current"}),t._v("当前")])])}],n=(s("e9f5"),s("910d"),s("f665"),s("7d54"),s("ab43"),s("1236"),s("e9c4"),s("c8a1")),r={name:"studentTagPaperAnswer",data(){return{loading:!1,submitting:!1,data:{},paper:{},assignment:{},attempt:{},questions:[],answers:{},saveTimer:null,savedAt:"",saveError:!1,offline:!navigator.onLine,cardVisible:!1,deadlineTimer:null,submitKey:"",now:Date.now(),currentId:""}},computed:{readonly(){const t=this.parseTime(this.assignment.endTime);return this.attempt.status&&"DRAFT"!==this.attempt.status||!isNaN(t)&&this.now>=t},answeredCount(){return this.questions.filter(this.answered).length},unansweredCount(){return this.questions.length-this.answeredCount},saveMessage(){return this.data.showResult?"结果已公布":this.readonly?"当前只读":this.saveError?"自动保存失败，已本地暂存":this.savedAt?"已自动保存 "+this.savedAt:"答案变更后自动保存"},saveIcon(){return this.saveError?"el-icon-warning":this.readonly||this.data.showResult?"el-icon-view":"el-icon-circle-check"}},created(){window.addEventListener("online",this.online),window.addEventListener("offline",this.offlineChanged),this.load()},beforeDestroy(){window.removeEventListener("online",this.online),window.removeEventListener("offline",this.offlineChanged),clearTimeout(this.saveTimer),clearInterval(this.deadlineTimer),this._scrollSpy&&window.removeEventListener("scroll",this._scrollSpy,!0)},methods:{async load(){this.loading=!0;try{const e=await n["a"].attempt(this.$route.query.attemptId);this.data=e,this.paper=e.paper||{},this.assignment=e.assignment||{},this.attempt=e.attempt||{},this.questions=e.questions||[],this.submitKey=localStorage.getItem(this.submitStorageKey())||"",(e.draftAnswers||e.answers||[]).forEach(t=>{this.$set(this.answers,t.id,t.answer||"")});const s=localStorage.getItem(this.storageKey());if(s&&"DRAFT"===this.attempt.status)try{const t=JSON.parse(s);t.answers&&await this.$confirm("检测到本机未同步草稿，是否恢复？","恢复草稿").catch(()=>!1)&&Object.keys(t.answers).forEach(e=>this.$set(this.answers,e,t.answers[e]))}catch(t){localStorage.removeItem(this.storageKey())}this.deadlineTimer=setInterval(()=>{this.now=Date.now()},1e3),this.questions.length&&(this.currentId=this.questions[0].questionId),this.$nextTick(()=>this.bindScrollSpy())}finally{this.loading=!1}},bindScrollSpy(){this._scrollSpy&&window.removeEventListener("scroll",this._scrollSpy,!0),this._scrollSpy=()=>{const t=100;let e=this.currentId;for(let s=0;s<this.questions.length;s++){const a=this.questions[s],i=document.getElementById("question-"+a.questionId);if(!i)continue;const n=i.getBoundingClientRect().top;n<=t&&(e=a.questionId)}this.currentId=e},window.addEventListener("scroll",this._scrollSpy,!0)},resultFor(t){const e=this.data.answers||[];return e.find(e=>e.id===t)||{}},parseTime(t){if(!t)return NaN;if(t instanceof Date)return t.getTime();if("number"===typeof t)return t;const e=String(t).trim();return e?/^\d+$/.test(e)?Number(e):new Date(e.replace(/-/g,"/")).getTime():NaN},storageKey(){return"tag-paper-draft-"+this.$route.query.attemptId},submitStorageKey(){return"tag-paper-submit-"+this.$route.query.attemptId},answerArray(t){return String(this.answers[t]||"").split(",").filter(Boolean)},answered(t){return""!==String(this.answers[t.questionId]||"").trim()},typeLabel(t){const e=t.questionType;return"Multiple"===e?"多选":"Judge"===e||"TrueFalse"===e?"判断":"Single"===e||"Choice"===e?"单选":""},formatTime(t){if(!t)return"--";const e=String(t);return/^\d{4}-\d{2}-\d{2}/.test(e)&&e.length>=16?e.slice(0,16):e},change(t,e){this.$set(this.answers,t,e),this.cacheLocal(),clearTimeout(this.saveTimer),this.saveTimer=setTimeout(this.save,700)},payload(){return this.questions.filter(t=>void 0!==this.answers[t.questionId]).map(t=>({id:t.questionId,answer:this.answers[t.questionId]||""}))},cacheLocal(){localStorage.setItem(this.storageKey(),JSON.stringify({answers:this.answers,updatedAt:Date.now()}))},async save(){if(!this.readonly&&!this.offline)try{const t=await n["a"].saveDraft(this.attempt.id,this.payload());if(this.attempt=t.attempt||this.attempt,"EXPIRED"===this.attempt.status)return;this.savedAt=(new Date).toLocaleTimeString("zh-CN",{hour12:!1}),this.saveError=!1,localStorage.removeItem(this.storageKey())}catch(t){this.saveError=!0,this.cacheLocal()}},online(){this.offline=!1,this.save()},offlineChanged(){this.offline=!0,this.cacheLocal()},scrollTo(t){this.currentId=t;const e=document.getElementById("question-"+t);e&&e.scrollIntoView({behavior:"smooth",block:"start"})},async submit(){const t=this.questions.length-this.answeredCount;try{await this.$confirm(t?`还有 ${t} 题未作答，提交后不可修改（仅一次策略下），确认提交吗？`:"确认提交题单吗？提交后将以当前答案为准。","提交确认",{confirmButtonText:"确认提交",cancelButtonText:"再检查一下",type:t?"warning":"info"})}catch(e){return}this.submitting=!0;try{this.submitKey||(this.submitKey=`${this.attempt.id}-${Date.now()}-${Math.random().toString(16).slice(2)}`,localStorage.setItem(this.submitStorageKey(),this.submitKey));const t=await n["a"].submit(this.attempt.id,{idempotencyKey:this.submitKey,answers:this.payload()});if(this.attempt=t.attempt||this.attempt,localStorage.removeItem(this.submitStorageKey()),this.submitKey="","EXPIRED"===this.attempt.status)return this.$message.error("题单已截止，草稿已作废");localStorage.removeItem(this.storageKey()),this.$message.success("提交成功");const e=0===this.$route.path.indexOf("/student-h5/");this.$router.replace(e?"/student-h5/tagPaper":"/student/tagPaper")}catch(e){this.$message.error(e&&e.message?"提交失败："+e.message:"提交失败，请检查网络后重试")}finally{this.submitting=!1}}}},o=r,c=(s("8dcd"),s("2877")),l=Object(c["a"])(o,a,i,!1,null,"7999cf62",null);e["default"]=l.exports}}]);