@palerock/exam-qa 1.0.5 → 1.0.6-patch2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (25) hide show
  1. package/dist/index.html +1 -1
  2. package/dist/static/css/{app.ca55413bb84f381cb1c76ff82cf63b2d.css → app.d3e969a579969be885a3462a1e12e37f.css} +2 -2
  3. package/dist/static/css/{app.ca55413bb84f381cb1c76ff82cf63b2d.css.map → app.d3e969a579969be885a3462a1e12e37f.css.map} +1 -1
  4. package/dist/static/js/app.53370ddfe5eba6a10565.js +2 -0
  5. package/dist/static/js/app.53370ddfe5eba6a10565.js.map +1 -0
  6. package/dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map +1 -1
  7. package/dist/static/js/{vendor.2266aa7b53ec643d4efa.js → vendor.ac467c0d394fa8945db3.js} +3 -3
  8. package/dist/static/js/vendor.ac467c0d394fa8945db3.js.map +1 -0
  9. package/lib-json/Salesforce-Admin-201-[Set-10].json +158 -0
  10. package/lib-json/Salesforce-Admin-201-[Set-1].json +604 -0
  11. package/lib-json/Salesforce-Admin-201-[Set-2].json +621 -0
  12. package/lib-json/Salesforce-Admin-201-[Set-3].json +650 -0
  13. package/lib-json/Salesforce-Admin-201-[Set-4].json +636 -0
  14. package/lib-json/Salesforce-Admin-201-[Set-5].json +640 -0
  15. package/lib-json/Salesforce-Admin-201-[Set-6].json +126 -0
  16. package/lib-json/Salesforce-Admin-201-[Set-7].json +126 -0
  17. package/lib-json/Salesforce-Admin-201-[Set-8].json +126 -0
  18. package/lib-json/Salesforce-Admin-201-[Set-9].json +126 -0
  19. package/lib-json/Salesforce-Certified-Platform-Developer-1-[Set-1].json +8 -5
  20. package/lib-json/Salesforce-Certified-Platform-Developer-1-[Set-7].json +5 -5
  21. package/lib-json/map.json +10 -0
  22. package/package.json +1 -1
  23. package/dist/static/js/app.bb356da473121a6a22a4.js +0 -2
  24. package/dist/static/js/app.bb356da473121a6a22a4.js.map +0 -1
  25. package/dist/static/js/vendor.2266aa7b53ec643d4efa.js.map +0 -1
@@ -1,2 +0,0 @@
1
- webpackJsonp([1],{"+c27":function(t,e){},"/E+L":function(t,e){},"3wLQ":function(t,e){},"4rJS":function(t,e){},"97dx":function(t,e){},JKiR:function(t,e){},NAlg:function(t,e){},NHnr:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n("7+uW"),r={render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{attrs:{id:"app"}},[e("transition",{attrs:{name:this.direction}},[e("router-view",{staticClass:"appView"})],1)],1)},staticRenderFns:[]};var o=n("VU/8")({name:"App",data:function(){return{direction:"slide-right"}},watch:{$route:function(t,e){var n=t.path.split("/").length,i=e.path.split("/").length;"/"===t.path?this.direction="slide-right":"/"===e.path?this.direction="slide-left":this.direction=n<i?"slide-right":"slide-left"}}},r,!1,function(t){n("u1TY")},null,null).exports,s=n("/ocq"),a=(n("FO5P"),n("woHG")),u=(n("RgoE"),n("0KWt")),c=(n("1E9F"),n("2Ux5")),l=n("L8Ge"),h=n.n(l),f=n("pDAi"),p=n.n(f),m=n("rXUV"),d=n.n(m),v=n("0VsM"),g=n.n(v),y=n("4vMe"),b=n.n(y),w=n("6Cj1"),x=n.n(w),k=n("49HJ"),C=n.n(k),_=n("Yo5Z"),q=n.n(_),E=n("7U2N"),S=n.n(E),I=n("Tg6C"),A=n.n(I),R=n("GiJQ"),D=n.n(R),O=n("/xtf"),N=n.n(O),T=n("crjn"),H=n.n(T),L=n("s1qc"),P=n.n(L),M=n("6qwz"),B=n.n(M),Q=n("0VlM"),j=n.n(Q),F=(n("cZ0s"),n("fIxc")),W=(n("RIEG"),n("zjGD")),$=(n("YP+l"),n("EA31")),z=(n("sgvh"),n("zc1Q")),U=(n("mMXg"),n("qYlo")),V=(n("3Lne"),n("SSsa")),Z=(n("MY4N"),n("0zAV")),J=(n("OWWB"),n("1fWZ")),G=(n("i0mo"),n("Hkar")),Y=(n("XmAh"),n("il3B")),K=n("IG2y"),X=n.n(K),tt=n("ckt0"),et=n.n(tt);function nt(t,e){var n=x()(t);if(b.a){var i=b()(t);e&&(i=i.filter(function(e){return g()(t,e).enumerable})),n.push.apply(n,i)}return n}var it={getHashCode:function(t){return this.getStrHashCode(this.getMessage(t).concat(this.getPropertyNames(t)).join(""))},getPropertyNames:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10;return n<=0?"":!t||["string","number","boolean","function"].includes(et()(t))||t instanceof Date?"":this.flat(q()(t).map(function(t){var i=C()(t,2),r=i[0],o=i[1];return[r,e.getPropertyNames(o,n--)]})).filter(function(t){return null!=t&&""!==t})},getMessage:function(t,e){var n=this;return null==e&&(e=10),e<=0?"":!t||["string","number","boolean","function"].includes(et()(t))||t instanceof Date?[null!=t?t.toString():""]:this.flat(x()(t).map(function(i){return n.getMessage(t[i],e--)})).filter(function(t){return null!=t&&""!==t})},getStrHashCode:function(t){var e,n,i=0;if(0===t.length)return i;for(e=0,n=t.length;e<n;e++)i=(i<<5)-i+t.charCodeAt(e),i|=0;return i+""},flat:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1/0,n=[],i=!1;return t.forEach(function(t){X()(t)?(i=!0,n.push.apply(n,P()(t))):n.push(t)}),i&&e>0?this.flat(n,e--):n},fromEntries:function(t){var e={};return t.forEach(function(t){t instanceof Array&&(e[t[0]]=t[1])}),e},storage:{getItem:function(t){var e=localStorage.getItem("__exam_s0_"+t),n=null;try{n=JSON.parse(e)}catch(e){console.log("No valid item for key [".concat(t,"] to get in storage."))}return n},setItem:function(t,e){var n=null;try{n=N()(e),localStorage.setItem("__exam_s0_"+t,n)}catch(e){console.log("Not valid item for key [".concat(t,"] to set."))}},removeItem:function(t){localStorage.removeItem("__exam_s0_"+t)}},groupArray:function(t,e){var n=this,i=t.map(function(t){return{hashCode:n.getHashCode(t),item:t}});e instanceof Array||(e=[e]);var r={};return i.map(function(t){return{hashCode:t.hashCode,checkItem:Object.fromEntries(e.map(function(e){return[e,(t.item||{})[e]]}))}}).map(function(t){return function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?nt(n,!0).forEach(function(e){j()(t,e,n[e])}):d.a?p()(t,d()(n)):nt(n).forEach(function(e){h()(t,e,g()(n,e))})}return t}({},t,{checkedHashCode:n.getHashCode(t.checkItem)})}).forEach(function(t){var e=r[t.checkedHashCode];e||(e=[]),e.push(i.find(function(e){return e.hashCode===t.hashCode}).item),r[t.checkedHashCode]=e}),S()(r)},duplicateRemoval:function(t){var e=t.map(function(t){return{item:t}});return this.groupArray(e,"item").map(function(t){return t[0].item})},randomSort:function(t){return t.sort(function(){return Math.random()-.5})}},rt=n("Kr0U"),ot=n.n(rt),st=n("EEoX"),at=n.n(st),ut=n("5WHX"),ct=n.n(ut),lt=n("mnGM"),ht=n.n(lt),ft=n("6DPD"),pt=n.n(ft),mt=n("OdJd"),dt=n.n(mt),vt=new(n("YwQ6").a)("_qa_db");vt.version(1).stores({config:"key, value, createDate, modifyDate",question:"hashCode, describe, type, createDate, modifyDate",bank:"hashCode, title, *questions, createDate, modifyDate",historyRecord:"relatedQuestion, rightTimes, errorTimes, maxTime, minTime, totalTime, createDate, modifyDate"}),vt.version(2).stores({bank:"hashCode, title, *questions, category, createDate, modifyDate"});var gt=vt.config,yt=vt.question,bt=vt.bank,wt=vt.historyRecord;function xt(t,e){var n=x()(t);if(b.a){var i=b()(t);e&&(i=i.filter(function(e){return g()(t,e).enumerable})),n.push.apply(n,i)}return n}function kt(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?xt(n,!0).forEach(function(e){j()(t,e,n[e])}):d.a?p()(t,d()(n)):xt(n).forEach(function(e){h()(t,e,g()(n,e))})}return t}var Ct=function(){function t(e,n){pt()(this,t),this.db=e,this.defaultEntry=n||{},this.db.hook("creating",function(t,e){e.createDate=ht()(),e.modifyDate=ht()()}),this.db.hook("updating",function(t,e,n){return t.modifiedDate=ht()(),n.createdDate||(t.createdDate=ht()()),console.log(kt({},t)),t})}return dt()(t,[{key:"upsert",value:function(){var t=D()(A.a.mark(function t(e){var n=this;return A.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(!(e instanceof Array)){t.next=2;break}return t.abrupt("return",this.db.bulkPut(e.map(function(t){return kt({},n.defaultEntry,{},t)})));case 2:return t.abrupt("return",this.db.put(kt({},this.defaultEntry,{},e)));case 3:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}()},{key:"query",value:function(t){return this.db.where(t)}},{key:"queryByHashCode",value:function(t){return this.query("hashCode").equals(t).first()}},{key:"delete",value:function(){var t=D()(A.a.mark(function t(e){return A.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(!(e instanceof Array)){t.next=2;break}return t.abrupt("return",this.db.bulkDelete(e));case 2:return t.abrupt("return",this.db.delete(e));case 3:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}()}]),t}(),_t=function(t){function e(){return pt()(this,e),ot()(this,at()(e).call(this,gt,{value:null}))}return ct()(e,t),e}(Ct),qt=function(t){function e(){return pt()(this,e),ot()(this,at()(e).call(this,yt,{describe:"",type:"picklist"}))}return ct()(e,t),e}(Ct),Et=function(t){function e(){return pt()(this,e),ot()(this,at()(e).call(this,bt,{title:"",questions:[]}))}return ct()(e,t),e}(Ct),St=function(t){function e(){return pt()(this,e),ot()(this,at()(e).call(this,wt,{rightTimes:0,errorTimes:0,maxTime:0,minTime:0,totalTime:0}))}return ct()(e,t),dt()(e,[{key:"queryByHashCode",value:function(t){return this.query("relatedQuestion").equals(t).first()}},{key:"queryMany",value:function(t){return this.query("relatedQuestion").anyOf(t).toArray()}}]),e}(Ct),It=new _t,At=new qt,Rt=new Et,Dt=new St,Ot="1.0.5";function Nt(t,e){var n=x()(t);if(b.a){var i=b()(t);e&&(i=i.filter(function(e){return g()(t,e).enumerable})),n.push.apply(n,i)}return n}function Tt(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Nt(n,!0).forEach(function(e){j()(t,e,n[e])}):d.a?p()(t,d()(n)):Nt(n).forEach(function(e){h()(t,e,g()(n,e))})}return t}i.a.use(Y.a),i.a.use(Z.a).use(J.a).use(G.a),i.a.use(V.a),i.a.use(U.a),i.a.use($.a).use(z.a),i.a.use(F.a).use(W.a);var Ht="https://unpkg.com/@palerock/exam-qa@latest/lib-json",Lt={name:"HomeIndex",data:function(){return{isShowImporter:!1,isShowOption:!1,isFromOnline:!1,onlineLibs:[],onlineSelects:[],questionLib:"",examList:[],currentCategory:"",categories:[],optionInfo:{canReviewError:!0,canDoExam:!0,canClear:!0,hashCode:""}}},computed:{selectedLibs:function(){var t=this,e=this.onlineLibs.filter(function(e){return t.onlineSelects.includes(e.hashCode)}).map(function(t){return Tt({},t)});return e.forEach(function(t){delete t.hashCode}),e},inCategory:function(){return!!this.currentCategory}},methods:{doExam:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];Rt.query("hashCode").equals(t).first().then(function(t){return B.a.all([t].concat(P()(t.questions.map(function(t){return At.query("hashCode").equals(t).first()}))))}).then(function(t){var i=H()(t),r=i[0],o=i.slice(1);r.questions=o,r?e.$router.push({name:"DoExamPage",params:{examConfig:r,isReviewError:n}}):Y.a.alert({message:"该题库已失效!"})})},clearHistory:function(t){var e=this;Rt.queryByHashCode(t).then(function(t){return t=t||{},Dt.delete(t.questions||[])}).then(function(){console.log("remove the history."),e.isShowOption=!1,e.initExamList()})},showOption:function(t){t.hasHistoryError?(this.optionInfo.hashCode=t.hashCode,this.isShowOption=!0):this.doExam(t.hashCode)},selectLib:function(t){this.onlineSelects.includes(t.hashCode)?this.onlineSelects=this.onlineSelects.filter(function(e){return e!==t.hashCode}):this.onlineSelects=[].concat(P()(this.onlineSelects),[t.hashCode]),this.questionLib=N()(this.selectedLibs)},showImporter:function(){this.isShowImporter=!0,this.isFromOnline=!1},importFromExist:function(){var t=this;this.isFromOnline=!0,this.fetchOnlineLib().then(function(e){t.onlineLibs=e.filter(function(t){return t.data}).map(function(t){return Tt({},t.data,{hashCode:it.getHashCode(t.data)})})}).catch(function(e){console.log(e),alert("获取失败,请尝试自行录入"),t.isShowImporter=!1})},fetchOnlineLib:function(){var t=D()(A.a.mark(function t(){var e,n,i=this;return A.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.$http.get(Ht+"/map.json");case 2:if(t.t0=t.sent.data,t.t0){t.next=5;break}t.t0=[];case 5:return e=t.t0,n=e.map(function(t){return i.$http.get(Ht+"/"+t)}),t.abrupt("return",B.a.all(n));case 8:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),importLib:function(){var t=D()(A.a.mark(function t(){var e,n=this;return A.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(t.prev=0,!((e=JSON.parse(this.questionLib))instanceof Array)){t.next=7;break}return t.next=5,B.a.all(e.map(function(){var t=D()(A.a.mark(function t(e){return A.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n.importSingleLib(e);case 2:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}()));case 5:t.next=9;break;case 7:return t.next=9,this.importSingleLib(e);case 9:t.next=14;break;case 11:t.prev=11,t.t0=t.catch(0),alert("题库格式错误:".concat(it.getMessage(t.t0)));case 14:return t.next=16,this.initExamList();case 16:this.isShowImporter=!1,this.questionLib="";case 18:case"end":return t.stop()}},t,this,[[0,11]])}));return function(){return t.apply(this,arguments)}}(),importSingleLib:function(){var t=D()(A.a.mark(function t(e){var n;return A.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(e.questions&&0!==e.questions.length){t.next=2;break}return t.abrupt("return",!1);case 2:return e.questions.forEach(function(t){t.hashCode=it.getHashCode(t)}),(n=Tt({},e,{questions:e.questions.map(function(t){return t.hashCode})})).hashCode=it.getHashCode(n),t.next=7,At.upsert(e.questions).then(function(){return Rt.upsert([n])});case 7:return t.abrupt("return",!0);case 8:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}(),intoCategory:function(){var t=D()(A.a.mark(function t(){var e,n=this,i=arguments;return A.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return e=i.length>0&&void 0!==i[0]?i[0]:"default",this.currentCategory=e,this.examList=[],t.next=5,Rt.query("hashCode").notEqual("").toArray().then(function(t){var e=t.map(function(t){return Dt.query("relatedQuestion").anyOf(t.questions).sortBy("createDate").then(function(e){var n=Object.fromEntries(e.map(function(t){return[t.relatedQuestion,Tt({},t,{times:t.errorTimes})]})),i=!!S()(n).find(function(t){return t.times>0});return Tt({},t,{errorMap:n,hasHistoryError:i})})});return B.a.all(e)}).then(function(t){t=t.map(function(t){return t.category=t.category||"default",t}),n.examList=t.filter(function(t){return t.category===e})});case 5:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),initExamList:function(){var t=D()(A.a.mark(function t(){var e=this;return A.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Rt.query("hashCode").notEqual("").toArray().then(function(t){t=t.map(function(t){return t.category=t.category||"default",t}),e.categories=t.reduce(function(t,e){return t.includes(e.category)||t.push(e.category),t},[])});case 2:this.currentCategory&&this.intoCategory(this.currentCategory);case 3:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),syncDataToIndexDB:function(){var t=JSON.parse(N()(this.examList)).map(function(t){return Tt({},t,{bank:it.storage.getItem(t.hashCode)})}).map(function(t){return Tt({},t,{questionSet:t.bank.questions,bank:Tt({},t.bank,{hashCode:it.getHashCode(t.bank),questions:t.bank.questions.map(function(t){return it.getHashCode(t)})}),historyRecords:q()(t.errorMap).map(function(t){var e=C()(t,2),n=e[0],i=e[1],r=i.times;return{relatedQuestion:n,rightTimes:i.rightTimes,errorTimes:r}})})});At.upsert(it.flat(t.map(function(t){return t.questionSet.map(function(t){return Tt({},t,{hashCode:it.getHashCode(t)})})}),2)).then(function(){return Rt.upsert(t.map(function(t){return t.bank}))}).then(function(){return Dt.upsert(it.flat(t.map(function(t){return t.historyRecords}),2))}).then(function(){return It.upsert({key:"hasSync",value:!0})}).then(function(){console.log("sync success.")}).catch(function(t){console.log(t)})}},mounted:function(){this.initExamList()}},Pt={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[t.inCategory?n("van-grid",[n("van-grid-item",{attrs:{icon:"notes-o",clickable:""},on:{click:function(e){t.currentCategory=null}}},[n("div",{staticClass:"van-grid-item__text text-align-center",attrs:{slot:"text"},slot:"text"},[t._v("返回")])]),t._v(" "),t._l(t.examList,function(e){return n("van-grid-item",{key:e.hashCode,attrs:{icon:"notes-o",clickable:""},on:{click:function(n){return t.showOption(e)}}},[n("div",{staticClass:"van-grid-item__text text-align-center",attrs:{slot:"text"},slot:"text"},[t._v(t._s(e.title))])])})],2):n("van-grid",[n("van-grid-item",{attrs:{icon:"notes-o",clickable:""},on:{click:t.showImporter}},[n("div",{staticClass:"van-grid-item__text text-align-center",attrs:{slot:"text"},slot:"text"},[t._v("开始答题(导入)")])]),t._v(" "),t._l(t.categories,function(e){return n("van-grid-item",{key:e,attrs:{icon:"notes-o",clickable:""},on:{click:function(n){return t.intoCategory(e)}}},[n("div",{staticClass:"van-grid-item__text text-align-center",attrs:{slot:"text"},slot:"text"},[t._v(t._s(e))])])})],2),t._v(" "),n("van-popup",{model:{value:t.isShowImporter,callback:function(e){t.isShowImporter=e},expression:"isShowImporter"}},[n("div",{staticClass:"exam-import-box"},[t.isFromOnline?n("div",{staticStyle:{"max-height":"300px","overflow-y":"auto"}},[n("van-checkbox-group",{model:{value:t.onlineSelects,callback:function(e){t.onlineSelects=e},expression:"onlineSelects"}},[n("van-cell-group",t._l(t.onlineLibs,function(e,i){return n("van-cell",{key:i,attrs:{clickable:""},on:{click:function(n){return t.selectLib(e)}}},[n("template",{slot:"title"},[n("span",[t._v(t._s(e.title))])]),t._v(" "),n("van-checkbox",{attrs:{slot:"right-icon",name:e.hashCode},slot:"right-icon"})],2)}),1)],1)],1):t._e(),t._v(" "),t.isFromOnline?t._e():n("div",[n("van-cell-group",[n("van-field",{attrs:{label:"题库",type:"textarea",placeholder:"请输入题库",rows:"10"},model:{value:t.questionLib,callback:function(e){t.questionLib=e},expression:"questionLib"}})],1)],1),t._v(" "),n("div",[n("van-button",{attrs:{type:"info",size:"small",block:""},on:{click:t.importLib}},[t._v("导入题库")])],1),t._v(" "),n("div",{staticClass:"exam-m-top-small"},[n("van-button",{attrs:{type:"primary",size:"small",block:""},on:{click:t.importFromExist}},[t._v("获取在线题库")])],1)])]),t._v(" "),n("van-popup",{attrs:{position:"bottom"},model:{value:t.isShowOption,callback:function(e){t.isShowOption=e},expression:"isShowOption"}},[n("div",{},[n("van-button",{attrs:{type:"primary",block:""},on:{click:function(e){return t.doExam(t.optionInfo.hashCode)}}},[t._v("重新测试\n ")]),t._v(" "),n("van-button",{attrs:{type:"info",block:""},on:{click:function(e){return t.doExam(t.optionInfo.hashCode,!0)}}},[t._v("复习错题\n ")]),t._v(" "),n("van-button",{attrs:{type:"danger",block:""},on:{click:function(e){return t.clearHistory(t.optionInfo.hashCode)}}},[t._v("清空错题\n ")])],1)])],1)},staticRenderFns:[]};var Mt=n("VU/8")(Lt,Pt,!1,function(t){n("cMfZ")},"data-v-30d414e0",null).exports;i.a.use(V.a);var Bt={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("van-button",{attrs:{type:"default"}},[t._v("默认按钮")]),t._v(" "),n("van-button",{attrs:{type:"primary"}},[t._v("主要按钮")]),t._v(" "),n("van-button",{attrs:{type:"info"}},[t._v("信息按钮")]),t._v(" "),n("van-button",{attrs:{type:"warning"}},[t._v("警告按钮")]),t._v(" "),n("van-button",{attrs:{type:"danger"}},[t._v("危险按钮")])],1)},staticRenderFns:[]};n("VU/8")({name:"HelloWorld",data:function(){return{msg:"Welcome to Your Vue.js App"}}},Bt,!1,null,null,null).exports;i.a.use(a.a).use(u.a).use(c.a);var Qt={name:"HomePage",data:function(){return{activeTabIndex:0,pages:[{title:"主页",label:"Home",api:Mt,icon:"home-o"}]}},computed:{activePage:function(){return this.pages[this.activeTabIndex]||{}},version:function(){return Ot}}},jt={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("van-nav-bar",{attrs:{title:t.activePage.label,fixed:""}}),t._v(" "),n("div",{staticClass:"is-relation"},[n(t.activePage.api,{tag:"component"}),t._v(" "),n("p",{staticClass:"text-align-center is-absolute",staticStyle:{color:"#efefef",width:"100%"}},[t._v(t._s(t.version))])],1),t._v(" "),n("van-tabbar",{model:{value:t.activeTabIndex,callback:function(e){t.activeTabIndex=e},expression:"activeTabIndex"}},t._l(t.pages,function(e,i){return n("van-tabbar-item",{key:i,attrs:{icon:e.icon}},[t._v(t._s(e.label))])}),1)],1)},staticRenderFns:[]};var Ft=n("VU/8")(Qt,jt,!1,function(t){n("zW/T")},"data-v-5c9e76e7",null).exports,Wt=(n("I4j4"),n("7fQT")),$t=(n("le1z"),n("hZxG")),zt=(n("HZGa"),n("pykS")),Ut=(n("ZuV/"),n("37Xn")),Vt=(n("JRZP"),n("LK01"));function Zt(t,e){var n=x()(t);if(b.a){var i=b()(t);e&&(i=i.filter(function(e){return g()(t,e).enumerable})),n.push.apply(n,i)}return n}function Jt(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Zt(n,!0).forEach(function(e){j()(t,e,n[e])}):d.a?p()(t,d()(n)):Zt(n).forEach(function(e){h()(t,e,g()(n,e))})}return t}i.a.use(Ut.a).use(Vt.a),i.a.use(Y.a),i.a.use(F.a).use(W.a),i.a.use(zt.a),i.a.use($t.a),i.a.use(J.a).use(G.a);var Gt={required:!0,score:1,usingScore:!1,type:"option",describe:"Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?",answerOptions:[{api:"A",describe:"Yes",isRight:!0},{api:"B",describe:"No"}]},Yt={title:"试题测试",questions:[Gt]};i.a.use(a.a).use(Wt.a).use(V.a);var Kt={name:"DoExamPage",data:function(){return{answers:[],questionNum:0,isShowResult:!1,letterIndex:P()("ABCDEFGHIJKLMNOPQRSTUVWXYZ"),examInfo:{},hasSubmit:!1,examHashCode:0,historyExams:[],showAcButtons:!1}},computed:{totalNum:function(){return this.questions.length},questions:function(){var t=this;return(this.examInfo.questions||[]).filter(function(e){return!t.isReviewError||t.historyErrorHashCodes.includes(e.hashCode)}).map(function(e,n){return Jt({},e,{active:n===t.questionNum})})},questionsInfo:function(){var t=this;return this.questions.map(function(e,n){return t.answers[n]||(t.answers[n]={results:[{}],single:{},multi:{apis:[]}}),Jt({},e,{answer:t.answers[n]||{},orderNum:n+1,isMulti:e.answerOptions.filter(function(t){return t.isRight}).length>1})})},historyErrorHashCodes:function(){return this.historyExams.filter(function(t){return t.errorTimes>0}).map(function(t){return t.hashCode})}},methods:{getQuestionTitle:function(t){return["(".concat(this.questionNum+1,"/").concat(this.totalNum,")"),t.describe].join(" ")},getQuestionDesc:function(t){var e="";t.required||(e+="(可选)"),"option"===t.type&&(t.isMulti?e+="多选题":e+="单选题");var n=this.historyExams.find(function(e){return e.hashCode===t.hashCode});if(n){this.isReviewError&&n.errorTimes&&(e+=" (做错次数: ".concat(n.errorTimes,")"));var i=n.errorTimes+n.rightTimes;i>0&&(e+="(历史正确率:".concat((n.rightTimes/i*100).toFixed(0),"%)"))}return e},setAnswer:function(t,e){this.answers=P()(this.answers).map(function(n,i){return i===t&&(n.results=e.map(function(t){return{api:t}}),n.single.api=e[0],n.multi.apis=e),n})},toggleAnswer:function(t,e){var n=this.answers[t].multi.apis;n.includes(e)?n=n.filter(function(t){return t!==e}):(n.push(e),n=P()(n)),this.setAnswer(t,n)},checkResult:function(t){var e=this;this.answers=P()(this.answers).map(function(n,i){if(t!==i&&null!=t)return n;var r=e.questions[i].answerOptions.filter(function(t){return t.isRight}).map(function(t){return t.api});return n.results.forEach(function(t){t.isMistake=!r.includes(t.api)}),n.isAnswered=n.results.filter(function(t){return t.api}).length>0,!n.isChecked&&n.isAnswered&&(n.isMistake=n.results.length!==r.length||!!n.results.find(function(t){return t.isMistake}),n.isPass=n.isAnswered&&!n.isMistake,n.isChecked=!0),n})},turnTo:function(t){this.questionNum=t},confirmSubmit:function(){var t=this;Y.a.confirm({title:"提交答案",message:"确认提交?"}).then(function(){t.submit()}).catch(function(t){console.log(t)})},submit:function(){this.checkResult();var t=this.questionsInfo.filter(function(t){return t.answer.isAnswered}).length;if(t<this.totalNum&&this.requireAllDone)Y.a.alert({message:"题目还没有答完:"+"".concat(t,"/").concat(this.totalNum)});else{var e=this.questionsInfo.filter(function(t){return t.answer.isPass}).length,n=e/this.totalNum*100+"%";this.questionsInfo.filter(function(t){return t.answer.isChecked}).forEach(function(t){Dt.queryByHashCode(t.hashCode).then(function(e){e||(e={relatedQuestion:t.hashCode,errorTimes:0}),t.answer.isPass?e.rightTimes++:e.errorTimes++,Dt.upsert(e).then(function(){console.log("做题信息已保存")})})}),this.isShowResult=!0,Y.a.alert({message:"答题结束,成绩如下:"+"正确:".concat(e,"(总共:").concat(this.totalNum,")(正确率:").concat(n,")")}),this.hasSubmit=!0}},adaptExamConfig:function(){var t=Jt({},Yt,{},this.examConfig);t.questions=t.questions.map(function(t){return Jt({},Gt,{},t,{hashCode:t.hashCode,answerOptions:t.answerOptions?t.answerOptions.map(function(t){return Jt({},t,{api:it.getHashCode(t)+""})}):[]})}).filter(function(t){if(!t.describe||0===t.answerOptions.length)return console.log("错误的题目(无描述或无答案).",t),!1;var e=it.groupArray(t.answerOptions,"isRight");if(1===e.length&&!e[0][0].isRight)return console.log("错误的题目(无正确答案).",t),!1;var n=it.groupArray(t.answerOptions,"describe").map(function(t){if(t.length>1){var e=Jt({},t[0]);return it.groupArray(t,"isRight").length!==t.length&&(e.invalid=!0),e}return t[0]});return n.find(function(t){return t.invalid})?(console.log("错误的题目(答案中有重复描述且对错不一).",t),!1):(t.answerOptions=it.randomSort(n),!0)}),t.questions=it.randomSort(t.questions),this.examInfo=t,this.examHashCode=this.examConfig.hashCode,this.loadHistoryExamInfo()},getOptionColor:function(t,e){return this.isShowResult||this.isPractice&&t.answer.isChecked?t.answer.results.map(function(t){return t.api}).includes(e.api)&&e.isRight?"#44af11":"#cd0000":"#1989fa"},loadHistoryExamInfo:function(){var t=this;Dt.queryMany(this.examConfig.questions.map(function(t){return t.hashCode})).then(function(e){t.historyExams=e.map(function(t){return Jt({},t,{hashCode:t.relatedQuestion})})})},swipe:function(t){switch(t.direction){case"Left":this.questionNum<this.totalNum-1&&this.turnTo(this.questionNum+1);break;case"Right":this.questionNum>0&&this.turnTo(this.questionNum-1);break;case"Up":this.showAcButtons=!1;break;case"Down":this.showAcButtons=!0}}},props:{examConfig:{type:Object,default:function(){return Yt}},isReviewError:{type:Boolean,default:!1},isNew:{type:Boolean,default:!1},requireAllDone:{type:Boolean,default:!1},isPractice:{type:Boolean,default:!0}},watch:{examConfig:function(){this.adaptExamConfig()}},mounted:function(){this.adaptExamConfig(),console.log("开始答题");try{plus.device.setWakelock(!0),console.log("打开屏幕常亮")}catch(t){}},destroyed:function(){console.log("结束答题");try{plus.device.setWakelock(!1),console.log("关闭屏幕常亮")}catch(t){}}},Xt={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{directives:[{name:"finger",rawName:"v-finger:swipe",value:t.swipe,expression:"swipe",arg:"swipe"}],staticClass:"exam-root"},[n("van-nav-bar",{attrs:{title:t.examInfo.title,fixed:"","left-arrow":"","right-text":"目录"},on:{"click-left":function(e){return t.$router.back()},"click-right":function(e){t.showAcButtons=!t.showAcButtons}}}),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.showAcButtons,expression:"showAcButtons"}],staticClass:"ac-qn-backdrop",on:{click:function(e){e.stopPropagation(),t.showAcButtons=!1}}},[n("div",{staticClass:"exam-p-around-small ac-qn",on:{click:function(t){t.stopPropagation()}}},[n("van-row",t._l(t.questionsInfo,function(e,i){return n("van-col",{key:i,attrs:{span:"4"}},[n("div",{staticClass:"exam-circle exam-done",class:{"exam-right":e.answer.isPass&&(t.isShowResult||e.answer.isChecked&&t.isPractice),"exam-error":e.answer.isMistake&&(t.isShowResult||e.answer.isChecked&&t.isPractice),"exam-current":t.questionNum===i},on:{click:function(e){return t.turnTo(i)}}},[t._v("\n "+t._s(i+1)+"\n ")])])}),1)],1)]),t._v(" "),n("div",{staticClass:"question-box",style:"width: "+100*t.totalNum+"%;transform:translate("+100*-t.questionNum/t.totalNum+"%,0)",on:{dblclick:function(e){e.stopPropagation(),t.showAcButtons=!0}}},t._l(t.questionsInfo,function(e,i){return n("div",{key:e.hashCode,staticClass:"question-item"},[n("van-panel",{attrs:{title:t.getQuestionTitle(e),desc:t.getQuestionDesc(e)}},[e.isMulti?n("div",[n("van-checkbox-group",{on:{click:function(t){t.stopPropagation()},dblclick:function(t){t.stopPropagation()}},model:{value:e.answer.multi.apis,callback:function(n){t.$set(e.answer.multi,"apis",n)},expression:"question.answer.multi.apis"}},[n("van-cell-group",t._l(e.answerOptions,function(r,o){return n("van-cell",{key:o,attrs:{clickable:""},on:{click:function(e){return t.toggleAnswer(i,r.api)}}},[n("template",{slot:"title"},[n("span",{class:{"right-answer":r.isRight&&t.isShowResult||r.isRight&&e.answer.isChecked&&t.isPractice,"error-answer":!r.isRight&&t.isShowResult||!r.isRight&&e.answer.isAnswered&&t.isPractice,"custom-title":!0}},[t._v(t._s(t.letterIndex[o]+". "+r.describe))])]),t._v(" "),n("van-checkbox",{attrs:{slot:"right-icon",name:r.api,"checked-color":t.getOptionColor(e,r)},slot:"right-icon"})],2)}),1)],1)],1):t._e(),t._v(" "),e.isMulti?t._e():n("div",[n("van-radio-group",{model:{value:e.answer.single.api,callback:function(n){t.$set(e.answer.single,"api",n)},expression:"question.answer.single.api"}},[n("van-cell-group",t._l(e.answerOptions,function(r,o){return n("van-cell",{key:o,attrs:{clickable:""},on:{click:function(e){return t.setAnswer(i,[r.api])}}},[n("template",{slot:"title"},[n("span",{class:{"right-answer":r.isRight&&t.isShowResult||r.isRight&&e.answer.isChecked&&t.isPractice,"error-answer":!r.isRight&&t.isShowResult||!r.isRight&&e.answer.isAnswered&&t.isPractice,"custom-title":!0}},[t._v(t._s(t.letterIndex[o]+". "+r.describe))])]),t._v(" "),n("van-radio",{attrs:{slot:"right-icon",name:r.api,"checked-color":t.getOptionColor(e,r)},slot:"right-icon"})],2)}),1)],1)],1)])],1)}),0),t._v(" "),t.questionsInfo[t.questionNum]?n("div",{staticClass:"text-align-center ac-buttons"},[t.questionNum>0?n("van-button",{attrs:{size:"small"},on:{click:function(e){return t.turnTo(t.questionNum-1)}}},[t._v("上一题")]):t._e(),t._v(" "),t.questionNum<t.totalNum-1?n("van-button",{attrs:{size:"small",type:"info"},on:{click:function(e){return t.turnTo(t.questionNum+1)}}},[t._v("下一题\n ")]):t._e(),t._v(" "),t.isPractice&&!t.questionsInfo[t.questionNum].answer.isChecked?n("van-button",{attrs:{size:"small",type:"warning"},on:{click:function(e){return t.checkResult(t.questionNum)}}},[t._v("检查该题答案\n ")]):t._e(),t._v(" "),t.hasSubmit?t._e():n("van-button",{attrs:{size:"small",type:"primary"},on:{click:t.confirmSubmit}},[t._v("提交\n ")])],1):t._e()],1)},staticRenderFns:[]};var te=n("VU/8")(Kt,Xt,!1,function(t){n("3wLQ")},"data-v-4b469db2",null).exports;i.a.use(s.a);var ee=new s.a({routes:[{path:"/",name:"HomePage",component:Ft},{path:"/exam",name:"DoExamPage",component:te,props:!0}]}),ne=(n("ZsCP"),n("mtWM")),ie=n.n(ne),re=n("hU7x"),oe=n.n(re),se=n("7oBh"),ae=n.n(se),ue=n("vhKK"),ce=n.n(ue);if(i.a.use(ce.a,{AlloyFinger:ae.a}),i.a.prototype.$http=ie.a,i.a.prototype.$http.jsonp=oe.a,Object.fromEntries||(Object.fromEntries=it.fromEntries),!Array.prototype.flat)try{h()(Array.prototype,"flat",{value:function(t){return it.flat(this,t)},enumerable:!1})}catch(t){Array.prototype.flat=function(t){return it.flat(this,t)}}i.a.config.productionTip=!1,new i.a({el:"#app",router:ee,components:{App:o},template:"<App/>"})},RUOb:function(t,e){},ZsCP:function(t,e){},cMfZ:function(t,e){},hW8u:function(t,e){},"hy4/":function(t,e){},juSK:function(t,e){},nLpc:function(t,e){},nOtf:function(t,e){},nsZj:function(t,e){},px3J:function(t,e){},sKgQ:function(t,e){},u1TY:function(t,e){},"zW/T":function(t,e){}},["NHnr"]);
2
- //# sourceMappingURL=app.bb356da473121a6a22a4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/App.vue?2b06","webpack:///./src/App.vue","webpack:///src/App.vue","webpack:///./src/utils/index.js","webpack:///./src/db/index.js","webpack:///./src/dao/index.js","webpack:///./src/config/index.js","webpack:///src/components/home-pages/HomeIndex.vue","webpack:///./src/components/home-pages/HomeIndex.vue?f9ed","webpack:///./src/components/home-pages/HomeIndex.vue","webpack:///src/components/HelloWorld.vue","webpack:///./src/components/HelloWorld.vue?3534","webpack:///./src/components/HelloWorld.vue","webpack:///src/components/HomePage.vue","webpack:///./src/components/HomePage.vue?7fc5","webpack:///./src/components/HomePage.vue","webpack:///src/components/exam/DoExamPage.vue","webpack:///./src/components/exam/DoExamPage.vue?3d1a","webpack:///./src/components/exam/DoExamPage.vue","webpack:///./src/router/index.js","webpack:///./src/plugins/index.js","webpack:///./src/main.js"],"names":["selectortype_template_index_0_src_App","render","_h","this","$createElement","_c","_self","attrs","id","name","direction","staticClass","staticRenderFns","src_App","__webpack_require__","normalizeComponent","data","watch","$route","to","from","toDepth","path","split","length","fromDepth","ssrContext","utils","getHashCode","obj","getStrHashCode","getMessage","concat","getPropertyNames","join","_this","deep","arguments","undefined","includes","typeof_default","Date","flat","entries_default","map","_ref","_ref2","slicedToArray_default","key","value","filter","r","_this2","toString","keys_default","str","i","len","hash","charCodeAt","arr","Infinity","ret","dirty","forEach","item","is_array_default","push","apply","toConsumableArray_default","fromEntries","result","a","Array","storage","getItem","itemStr","localStorage","JSON","parse","e","console","log","setItem","stringify_default","removeItem","groupArray","groupedBy","_this3","array","hashCode","checkedMap","checkItem","Object","groupBy","_objectSpread","checkedHashCode","hashArr","find","values_default","duplicateRemoval","g","randomSort","sort","Math","random","dexieDB","Dexie","version","stores","config","question","bank","historyRecord","configDB","questionDB","bankDB","historyRecordDB","BaseDao","db","defaultEntry","classCallCheck_default","hook","primKey","createDate","now_default","modifyDate","changed","origin","dao__objectSpread","records","bulkPut","put","field","where","query","equals","first","keys","bulkDelete","delete","ConfigDao","possibleConstructorReturn_default","getPrototypeOf_default","call","QuestionDao","describe","type","BankDao","title","questions","HistoryRecordDao","rightTimes","errorTimes","maxTime","minTime","totalTime","hashCodeList","anyOf","toArray","configDao","questionDao","bankDao","historyRecordDao","vue_esm","use","dialog","cell","cell_group","es_button","popup","grid","grid_item","es_checkbox","checkbox_group","existsMap","HomeIndex","isShowImporter","isShowOption","isFromOnline","onlineLibs","onlineSelects","questionLib","examList","currentCategory","categories","optionInfo","canReviewError","canDoExam","canClear","computed","selectedLibs","res","lib","HomeIndex__objectSpread","inCategory","methods","doExam","isReviewError","dao_bankDao","then","exam","promise_default","all","q","toArray_default","slice","$router","params","examConfig","alert","message","clearHistory","queryByHashCode","initExamList","showOption","hasHistoryError","selectLib","s","showImporter","importFromExist","_this4","fetchOnlineLib","catch","_fetchOnlineLib","asyncToGenerator_default","regenerator_default","mark","_callee","maps","promises","_this5","wrap","_context","prev","next","$http","get","t0","sent","exist","abrupt","stop","importLib","_importLib","_callee3","_this6","_context3","_ref3","_callee2","l","_context2","importSingleLib","_x","_importSingleLib","_callee4","_context4","upsert","_x2","intoCategory","_intoCategory","_callee5","category","_this7","_args5","_context5","notEqual","banks","sortBy","errorMap","record","relatedQuestion","times","b","_initExamList","_callee6","_this8","_context6","reduce","ac","syncDataToIndexDB","exams","questionSet","historyRecords","_ref4","_ref5","_ref5$","mounted","home_pages_HomeIndex","_vm","icon","clickable","on","click","$event","slot","_v","_l","_s","model","callback","$$v","expression","staticStyle","max-height","overflow-y","oi","_e","label","placeholder","rows","size","block","position","components_home_pages_HomeIndex","HomeIndex_normalizeComponent","components_HelloWorld","HelloWorld_normalizeComponent","msg","nav_bar","tabbar","tabbar_item","HomePage","activeTabIndex","pages","api","activePage","components_HomePage","fixed","tag","color","width","page","src_components_HomePage","HomePage_normalizeComponent","row","col","radio_group","es_radio","defaultQuestionInfo","required","score","usingScore","answerOptions","isRight","defaultExamInfo","panel","DoExamPage","answers","questionNum","isShowResult","letterIndex","examInfo","hasSubmit","examHashCode","historyExams","showAcButtons","totalNum","historyErrorHashCodes","DoExamPage__objectSpread","active","questionsInfo","results","single","multi","apis","answer","orderNum","isMulti","opt","getQuestionTitle","getQuestionDesc","errorExam","totalTimes","toFixed","setAnswer","ai","toggleAnswer","checkResult","rightAnswers","option","isMistake","isAnswered","isChecked","isPass","turnTo","confirmSubmit","confirm","submit","answeredNum","requireAllDone","rightNum","rightRate","codeInfo","adaptExamConfig","checkNoAnswer","resultAnswers","checks","invalid","loadHistoryExamInfo","getOptionColor","isPractice","queryMany","swipe","evt","props","default","Boolean","isNew","plus","device","setWakelock","destroyed","exam_DoExamPage","directives","rawName","arg","left-arrow","right-text","click-left","back","click-right","stopPropagation","span","class","exam-right","exam-error","exam-current","style","dblclick","desc","$set","right-answer","error-answer","custom-title","checked-color","components_exam_DoExamPage","DoExamPage_normalizeComponent","Vue","Router","router","routes","component","AlloyFingerPlugin","AlloyFinger","prototype","axios","jsonp","Utils","define_property_default","enumerable","productionTip","el","components","App","template"],"mappings":"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","file":"static/js/app.bb356da473121a6a22a4.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('transition',{attrs:{\"name\":_vm.direction}},[_c('router-view',{staticClass:\"appView\"})],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-70ce3a13\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-70ce3a13\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-70ce3a13\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","<template>\n <div id=\"app\">\n <transition :name=\"direction\">\n <router-view class=\"appView\"/>\n </transition>\n </div>\n</template>\n\n<script>\n export default {\n name: 'App',\n data: () => ({\n direction: \"slide-right\"\n }),\n watch: {\n $route(to, from) {\n const toDepth = to.path.split(\"/\").length;\n const fromDepth = from.path.split(\"/\").length;\n if (to.path === \"/\") {\n this.direction = \"slide-right\";\n } else if (from.path === \"/\") {\n this.direction = \"slide-left\";\n } else {\n this.direction = toDepth < fromDepth ? \"slide-right\" : \"slide-left\";\n }\n }\n }\n }\n</script>\n\n<style>\n #app {\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n color: #2c3e50;\n margin-top: 60px;\n }\n\n .appView {\n position: absolute;\n width: 100%;\n transition: left .3s ease-out;\n left: 0;\n }\n\n .slide-left-enter {\n /*transform: translate(100%, 0);*/\n left: 100%;\n }\n\n .slide-left-leave-active {\n /*transform: translate(-50%, 0);*/\n left: -50%;\n }\n\n .slide-right-enter {\n /*transform: translate(-50%, 0);*/\n left: -50%;\n z-index: 20;\n }\n\n .slide-right-leave-active {\n /*transform: translate(100%, 0);*/\n left: 100%;\n z-index: 20;\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","export default {\n getHashCode(obj) {\n return this.getStrHashCode(this.getMessage(obj).concat(this.getPropertyNames(obj)).join(''));\n },\n getPropertyNames(_self, deep = 10) {\n if (deep <= 0) {\n return '';\n }\n if (!_self || ['string', 'number', 'boolean', 'function'].includes(typeof _self) || _self instanceof Date) {\n return '';\n }\n return this.flat(\n Object.entries(_self).map(([key, value]) => [key, this.getPropertyNames(value, deep--)])\n ).filter(r => r != null && r !== '')\n },\n getMessage(_self, deep) {\n deep == null && (deep = 10);\n if (deep <= 0) {\n return '';\n }\n if (!_self || ['string', 'number', 'boolean', 'function'].includes(typeof _self) || _self instanceof Date) {\n return [_self != null ? _self.toString() : ''];\n }\n return this.flat(\n Object.keys(_self).map(key => {\n return this.getMessage(_self[key], deep--);\n })\n ).filter(r => r != null && r !== '');\n },\n getStrHashCode(str) {\n let hash = 0, i, chr, len;\n if (str.length === 0) return hash;\n for (i = 0, len = str.length; i < len; i++) {\n chr = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash + '';\n },\n flat(arr, deep = Infinity) {\n let ret = [];\n let dirty = false;\n arr.forEach(item => {\n if (Array.isArray(item)) {\n dirty = true;\n ret.push(...item)\n } else {\n ret.push(item)\n }\n });\n return dirty && deep > 0 ? this.flat(ret, deep--) : ret\n },\n fromEntries(arr) {\n let result = {};\n arr.forEach(a => {\n if (a instanceof Array) {\n result[a[0]] = a[1];\n }\n });\n return result;\n },\n storage: {\n getItem(key) {\n let itemStr = localStorage.getItem('__exam_s0_' + key);\n let result = null;\n try {\n result = JSON.parse(itemStr);\n } catch (e) {\n console.log(`No valid item for key [${key}] to get in storage.`);\n }\n return result;\n },\n setItem(key, value) {\n let result = null;\n try {\n result = JSON.stringify(value);\n localStorage.setItem('__exam_s0_' + key, result);\n } catch (e) {\n console.log(`Not valid item for key [${key}] to set.`);\n }\n },\n removeItem(key) {\n localStorage.removeItem('__exam_s0_' + key);\n },\n },\n groupArray(arr, groupedBy) {\n let array = arr.map(a => ({hashCode: this.getHashCode(a), item: a}));\n if (!(groupedBy instanceof Array)) {\n groupedBy = [groupedBy];\n }\n let checkedArr = array.map(a => ({\n hashCode: a.hashCode,\n checkItem: Object.fromEntries(\n groupedBy.map(groupBy => [groupBy, (a.item || {})[groupBy]])\n )\n })).map(a => ({...a, checkedHashCode: this.getHashCode(a.checkItem)}));\n let checkedMap = {};\n checkedArr.forEach(a => {\n let hashArr = checkedMap[a.checkedHashCode];\n if (!hashArr) {\n hashArr = [];\n }\n hashArr.push(array.find(arr => arr.hashCode === a.hashCode).item);\n checkedMap[a.checkedHashCode] = hashArr;\n });\n return Object.values(checkedMap);\n },\n duplicateRemoval(arr) {\n let array = arr.map(a => ({item: a}));\n let grouped = this.groupArray(array, 'item');\n return grouped.map(g => g[0].item);\n },\n randomSort(arr) {\n return arr.sort(() => {\n return Math.random() - 0.5;\n })\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/index.js","import Dexie from \"dexie\";\n\nconst dexieDB = new Dexie('_qa_db');\ndexieDB.version(1).stores({\n config: 'key, value, createDate, modifyDate',\n question: 'hashCode, describe, type, createDate, modifyDate',\n bank: 'hashCode, title, *questions, createDate, modifyDate',\n historyRecord: 'relatedQuestion, rightTimes, errorTimes, maxTime, minTime, totalTime, createDate, modifyDate'\n});\ndexieDB.version(2).stores({\n bank: 'hashCode, title, *questions, category, createDate, modifyDate',\n});\nconst configDB = dexieDB['config'];\nconst questionDB = dexieDB['question'];\nconst bankDB = dexieDB['bank'];\nconst historyRecordDB = dexieDB['historyRecord'];\n\nexport {dexieDB, configDB, questionDB, bankDB, historyRecordDB};\n\n\n// WEBPACK FOOTER //\n// ./src/db/index.js","import {dexieDB, configDB, questionDB, bankDB, historyRecordDB} from '../db';\n\nclass BaseDao {\n constructor(db, defaultEntry) {\n this.db = db;\n this.defaultEntry = defaultEntry || {};\n this.db.hook('creating', (primKey, obj) => {\n obj.createDate = Date.now();\n obj.modifyDate = Date.now();\n });\n this.db.hook('updating', (changed, key, origin) => {\n changed['modifiedDate'] = Date.now();\n if (!origin['createdDate']) {\n changed['createdDate'] = Date.now();\n }\n console.log({...changed});\n return changed;\n })\n }\n\n async upsert(records) {\n if (records instanceof Array) {\n return this.db.bulkPut(records.map(r => ({...this.defaultEntry, ...r})));\n }\n return this.db.put({...this.defaultEntry, ...records});\n }\n\n query(field) {\n return this.db.where(field);\n }\n\n queryByHashCode(hashCode) {\n return this.query('hashCode').equals(hashCode).first();\n }\n\n async delete(keys) {\n if (keys instanceof Array) {\n return this.db.bulkDelete(keys);\n }\n return this.db.delete(keys);\n }\n}\n\n\nclass ConfigDao extends BaseDao {\n constructor() {\n super(configDB, {value: null});\n }\n}\n\nclass QuestionDao extends BaseDao {\n constructor() {\n super(questionDB, {\n describe: '',\n type: 'picklist'\n });\n }\n}\n\nclass BankDao extends BaseDao {\n constructor() {\n super(bankDB, {\n title: '',\n questions: []\n });\n }\n}\n\nclass HistoryRecordDao extends BaseDao {\n constructor() {\n super(historyRecordDB, {\n rightTimes: 0, errorTimes: 0, maxTime: 0, minTime: 0, totalTime: 0\n });\n }\n\n queryByHashCode(hashCode) {\n return this.query('relatedQuestion').equals(hashCode).first();\n }\n\n queryMany(hashCodeList) {\n return this.query('relatedQuestion').anyOf(hashCodeList).toArray();\n }\n}\n\nconst configDao = new ConfigDao();\nconst questionDao = new QuestionDao();\nconst bankDao = new BankDao();\nconst historyRecordDao = new HistoryRecordDao();\n\nexport {configDao, questionDao, bankDao, historyRecordDao}\n\n\n// WEBPACK FOOTER //\n// ./src/dao/index.js","export default {\n version: '1.0.5',\n domain:'//palerock.cn',\n // domain:'//localhost'\n}\n\n\n// WEBPACK FOOTER //\n// ./src/config/index.js","<template>\n <div>\n <van-grid v-if=\"!inCategory\">\n <van-grid-item\n icon=\"notes-o\"\n clickable\n @click=\"showImporter\">\n <div slot=\"text\" class=\"van-grid-item__text text-align-center\">开始答题(导入)</div>\n </van-grid-item>\n <van-grid-item\n v-for=\"category in categories\"\n :key=\"category\"\n icon=\"notes-o\"\n clickable\n @click=\"intoCategory(category)\">\n <div slot=\"text\" class=\"van-grid-item__text text-align-center\">{{ category }}</div>\n </van-grid-item>\n </van-grid>\n <van-grid v-else>\n <van-grid-item\n icon=\"notes-o\"\n clickable\n @click=\"currentCategory = null\">\n <div slot=\"text\" class=\"van-grid-item__text text-align-center\">返回</div>\n </van-grid-item>\n <van-grid-item\n v-for=\"exam in examList\"\n :key=\"exam.hashCode\"\n icon=\"notes-o\"\n clickable\n @click=\"showOption(exam)\">\n <div slot=\"text\" class=\"van-grid-item__text text-align-center\">{{ exam.title }}</div>\n </van-grid-item>\n </van-grid>\n <van-popup v-model=\"isShowImporter\">\n <div class=\"exam-import-box\">\n <div v-if=\"isFromOnline\" style=\"max-height: 300px;overflow-y: auto;\">\n <van-checkbox-group v-model=\"onlineSelects\">\n <van-cell-group>\n <van-cell v-for=\"(lib, oi) in onlineLibs\"\n clickable\n @click=\"selectLib(lib)\"\n :key=\"oi\">\n <template slot=\"title\">\n <span>{{ lib.title }}</span>\n </template>\n <van-checkbox slot=\"right-icon\" :name=\"lib.hashCode\"></van-checkbox>\n </van-cell>\n </van-cell-group>\n </van-checkbox-group>\n </div>\n <div v-if=\"!isFromOnline\">\n <van-cell-group>\n <van-field\n v-model=\"questionLib\"\n label=\"题库\"\n type=\"textarea\"\n placeholder=\"请输入题库\"\n rows=\"10\"></van-field>\n </van-cell-group>\n </div>\n <div>\n <van-button type=\"info\" size=\"small\" block @click=\"importLib\">导入题库</van-button>\n </div>\n <div class=\"exam-m-top-small\">\n <van-button type=\"primary\" size=\"small\" block @click=\"importFromExist\">获取在线题库</van-button>\n </div>\n </div>\n </van-popup>\n <van-popup v-model=\"isShowOption\" position=\"bottom\">\n <div class=\"\">\n <van-button type=\"primary\" block @click=\"doExam(optionInfo.hashCode)\">重新测试\n </van-button>\n <van-button type=\"info\" block @click=\"doExam(optionInfo.hashCode,true)\">复习错题\n </van-button>\n <van-button type=\"danger\" block @click=\"clearHistory(optionInfo.hashCode)\">清空错题\n </van-button>\n </div>\n </van-popup>\n </div>\n</template>\n\n<script>\nimport Vue from 'vue';\nimport {Grid, GridItem} from 'vant';\nimport {Popup} from 'vant';\nimport {Button} from 'vant';\nimport {Field} from 'vant';\nimport {Cell, CellGroup} from 'vant';\nimport utils from '../../utils';\nimport {questionDao, historyRecordDao, bankDao, configDao} from '../../dao';\nimport {Dialog} from 'vant';\nimport config from \"@/config\";\nimport {Checkbox, CheckboxGroup} from 'vant';\n\nVue.use(Dialog);\nVue.use(Field).use(Cell).use(CellGroup);\nVue.use(Button);\nVue.use(Popup);\nVue.use(Grid).use(GridItem);\nVue.use(Checkbox).use(CheckboxGroup);\n\nconst existsMap = 'https://unpkg.com/@palerock/exam-qa@latest/lib-json';\nexport default {\n name: \"HomeIndex\",\n data() {\n return {\n isShowImporter: false,\n isShowOption: false,\n isFromOnline: false,\n onlineLibs: [],\n onlineSelects: [],\n questionLib: '',\n examList: [],\n currentCategory: '',\n categories: [],\n optionInfo: {\n canReviewError: true,\n canDoExam: true,\n canClear: true,\n hashCode: ''\n }\n }\n },\n computed: {\n selectedLibs() {\n let res = this.onlineLibs.filter(lib => this.onlineSelects.includes(lib.hashCode)).map(lib => ({...lib}));\n res.forEach(r => {\n delete r.hashCode;\n });\n return res;\n },\n inCategory() {\n return !!this.currentCategory\n }\n },\n methods: {\n doExam(hashCode, isReviewError = false) {\n // let exam = utils.storage.getItem(hashCode);\n bankDao.query('hashCode').equals(hashCode).first()\n .then(exam => {\n return Promise.all([exam, ...exam.questions.map(q => questionDao.query('hashCode').equals(q).first())])\n })\n .then(([exam, ...questions]) => {\n exam.questions = questions;\n if (!exam) {\n Dialog.alert({message: '该题库已失效!'});\n return;\n }\n this.$router.push({\n name: 'DoExamPage',\n params: {\n examConfig: exam,\n isReviewError\n }\n })\n });\n },\n clearHistory(hashCode) {\n bankDao.queryByHashCode(hashCode)\n .then(bankDao => {\n bankDao = bankDao || {};\n return historyRecordDao.delete(bankDao.questions || []);\n }).then(() => {\n console.log('remove the history.');\n this.isShowOption = false;\n this.initExamList();\n }\n );\n },\n showOption(exam) {\n // console.log(exam.hashCode);\n if (exam.hasHistoryError) {\n this.optionInfo.hashCode = exam.hashCode;\n this.isShowOption = true;\n } else {\n this.doExam(exam.hashCode);\n }\n },\n selectLib(lib) {\n this.onlineSelects.includes(lib.hashCode) ? (this.onlineSelects = this.onlineSelects.filter(s => s !== lib.hashCode)) : (this.onlineSelects = [...this.onlineSelects, lib.hashCode])\n this.questionLib = JSON.stringify(this.selectedLibs);\n },\n showImporter() {\n this.isShowImporter = true;\n this.isFromOnline = false;\n },\n importFromExist() {\n this.isFromOnline = true;\n this.fetchOnlineLib().then(res => {\n this.onlineLibs = res.filter(r => r.data).map(r => ({\n ...r.data, hashCode: utils.getHashCode(r.data)\n }));\n }).catch(e => {\n console.log(e)\n alert('获取失败,请尝试自行录入');\n this.isShowImporter = false;\n })\n },\n async fetchOnlineLib() {\n const maps = (await this.$http.get(existsMap + \"/map.json\")).data || []\n const promises = maps.map(exist => this.$http.get(existsMap + \"/\" + exist));\n return Promise.all(promises);\n },\n async importLib() {\n try {\n let lib = JSON.parse(this.questionLib);\n if (lib instanceof Array) {\n await Promise.all(lib.map(async l => {\n await this.importSingleLib(l);\n }))\n } else {\n await this.importSingleLib(lib);\n }\n } catch (e) {\n alert(`题库格式错误:${utils.getMessage(e)}`)\n }\n await this.initExamList();\n this.isShowImporter = false;\n this.questionLib = ''\n },\n async importSingleLib(lib) {\n if (!lib.questions || lib.questions.length === 0) {\n return false;\n }\n lib.questions.forEach(q=>{\n q.hashCode = utils.getHashCode(q)\n })\n const bank = {\n ...lib,\n questions: lib.questions.map(q=>q.hashCode)\n }\n bank.hashCode = utils.getHashCode(bank)\n await questionDao.upsert(lib.questions)\n .then(()=>{\n return bankDao.upsert([bank]);\n })\n return true;\n },\n async intoCategory(category = 'default') {\n this.currentCategory = category\n this.examList = []\n await bankDao.query('hashCode').notEqual('').toArray().then(banks => {\n const promises = banks.map(bank => {\n return historyRecordDao.query('relatedQuestion').anyOf(bank.questions).sortBy('createDate')\n .then(records => {\n const errorMap = Object.fromEntries(records.map(record => [record.relatedQuestion, {\n ...record, times: record.errorTimes\n }]));\n const hasHistoryError = !!Object.values(errorMap).find(q => q.times > 0);\n return {...bank, errorMap, hasHistoryError}\n });\n });\n return Promise.all(promises);\n }).then(banks => {\n banks = banks.map(b => {\n b.category = b.category || 'default'\n return b\n })\n this.examList = banks.filter(b => b.category === category);\n })\n },\n async initExamList() {\n await bankDao.query('hashCode').notEqual('').toArray().then(banks => {\n banks = banks.map(b => {\n b.category = b.category || 'default'\n return b\n })\n this.categories = banks.reduce((ac, item) => {\n if (!ac.includes(item.category)) {\n ac.push(item.category)\n }\n return ac\n }, [])\n })\n if (this.currentCategory) {\n this.intoCategory(this.currentCategory)\n }\n },\n syncDataToIndexDB() {\n let exams = JSON.parse(JSON.stringify(this.examList))\n .map(e => ({...e, bank: utils.storage.getItem(e.hashCode)}))\n .map(e => ({\n ...e,\n questionSet: e.bank.questions,\n bank: {\n ...e.bank, hashCode: utils.getHashCode(e.bank),\n questions: e.bank.questions.map(q => utils.getHashCode(q))\n },\n historyRecords: Object.entries(e.errorMap)\n .map(([relatedQuestion, {times, rightTimes}]) => ({\n relatedQuestion, rightTimes, errorTimes: times\n }))\n }));\n questionDao.upsert(\n utils.flat(exams.map(e => e.questionSet.map(q => ({\n ...q,\n hashCode: utils.getHashCode(q),\n }))), 2)\n ).then(() => {\n return bankDao.upsert(exams.map(e => e.bank));\n }).then(() => {\n return historyRecordDao.upsert(utils.flat(exams.map(e => e.historyRecords), 2));\n }).then(() => {\n return configDao.upsert({key: 'hasSync', value: true});\n }).then(() => {\n console.log('sync success.');\n }).catch(e => {\n console.log(e);\n });\n // console.log(exams);\n }\n },\n mounted() {\n this.initExamList();\n // configDao.query('key').equals('hasSync').first()\n // .then(hasSync => {\n // hasSync = !!hasSync;\n // if (!hasSync) {\n // this.syncDataToIndexDB();\n // }\n // });\n }\n}\n</script>\n\n<style scoped>\n.exam-import-box {\n width: 20rem;\n padding: 1rem;\n}\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/home-pages/HomeIndex.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.inCategory)?_c('van-grid',[_c('van-grid-item',{attrs:{\"icon\":\"notes-o\",\"clickable\":\"\"},on:{\"click\":_vm.showImporter}},[_c('div',{staticClass:\"van-grid-item__text text-align-center\",attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(\"开始答题(导入)\")])]),_vm._v(\" \"),_vm._l((_vm.categories),function(category){return _c('van-grid-item',{key:category,attrs:{\"icon\":\"notes-o\",\"clickable\":\"\"},on:{\"click\":function($event){return _vm.intoCategory(category)}}},[_c('div',{staticClass:\"van-grid-item__text text-align-center\",attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(category))])])})],2):_c('van-grid',[_c('van-grid-item',{attrs:{\"icon\":\"notes-o\",\"clickable\":\"\"},on:{\"click\":function($event){_vm.currentCategory = null}}},[_c('div',{staticClass:\"van-grid-item__text text-align-center\",attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(\"返回\")])]),_vm._v(\" \"),_vm._l((_vm.examList),function(exam){return _c('van-grid-item',{key:exam.hashCode,attrs:{\"icon\":\"notes-o\",\"clickable\":\"\"},on:{\"click\":function($event){return _vm.showOption(exam)}}},[_c('div',{staticClass:\"van-grid-item__text text-align-center\",attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(exam.title))])])})],2),_vm._v(\" \"),_c('van-popup',{model:{value:(_vm.isShowImporter),callback:function ($$v) {_vm.isShowImporter=$$v},expression:\"isShowImporter\"}},[_c('div',{staticClass:\"exam-import-box\"},[(_vm.isFromOnline)?_c('div',{staticStyle:{\"max-height\":\"300px\",\"overflow-y\":\"auto\"}},[_c('van-checkbox-group',{model:{value:(_vm.onlineSelects),callback:function ($$v) {_vm.onlineSelects=$$v},expression:\"onlineSelects\"}},[_c('van-cell-group',_vm._l((_vm.onlineLibs),function(lib,oi){return _c('van-cell',{key:oi,attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.selectLib(lib)}}},[_c('template',{slot:\"title\"},[_c('span',[_vm._v(_vm._s(lib.title))])]),_vm._v(\" \"),_c('van-checkbox',{attrs:{\"slot\":\"right-icon\",\"name\":lib.hashCode},slot:\"right-icon\"})],2)}),1)],1)],1):_vm._e(),_vm._v(\" \"),(!_vm.isFromOnline)?_c('div',[_c('van-cell-group',[_c('van-field',{attrs:{\"label\":\"题库\",\"type\":\"textarea\",\"placeholder\":\"请输入题库\",\"rows\":\"10\"},model:{value:(_vm.questionLib),callback:function ($$v) {_vm.questionLib=$$v},expression:\"questionLib\"}})],1)],1):_vm._e(),_vm._v(\" \"),_c('div',[_c('van-button',{attrs:{\"type\":\"info\",\"size\":\"small\",\"block\":\"\"},on:{\"click\":_vm.importLib}},[_vm._v(\"导入题库\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"exam-m-top-small\"},[_c('van-button',{attrs:{\"type\":\"primary\",\"size\":\"small\",\"block\":\"\"},on:{\"click\":_vm.importFromExist}},[_vm._v(\"获取在线题库\")])],1)])]),_vm._v(\" \"),_c('van-popup',{attrs:{\"position\":\"bottom\"},model:{value:(_vm.isShowOption),callback:function ($$v) {_vm.isShowOption=$$v},expression:\"isShowOption\"}},[_c('div',{},[_c('van-button',{attrs:{\"type\":\"primary\",\"block\":\"\"},on:{\"click\":function($event){return _vm.doExam(_vm.optionInfo.hashCode)}}},[_vm._v(\"重新测试\\n \")]),_vm._v(\" \"),_c('van-button',{attrs:{\"type\":\"info\",\"block\":\"\"},on:{\"click\":function($event){return _vm.doExam(_vm.optionInfo.hashCode,true)}}},[_vm._v(\"复习错题\\n \")]),_vm._v(\" \"),_c('van-button',{attrs:{\"type\":\"danger\",\"block\":\"\"},on:{\"click\":function($event){return _vm.clearHistory(_vm.optionInfo.hashCode)}}},[_vm._v(\"清空错题\\n \")])],1)])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-30d414e0\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/home-pages/HomeIndex.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-30d414e0\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./HomeIndex.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./HomeIndex.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./HomeIndex.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-30d414e0\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./HomeIndex.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-30d414e0\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/home-pages/HomeIndex.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <van-button type=\"default\">默认按钮</van-button>\n <van-button type=\"primary\">主要按钮</van-button>\n <van-button type=\"info\">信息按钮</van-button>\n <van-button type=\"warning\">警告按钮</van-button>\n <van-button type=\"danger\">危险按钮</van-button>\n </div>\n</template>\n\n<script>\n import Vue from 'vue';\n import { Button } from 'vant';\n\n Vue.use(Button);\n\n export default {\n name: 'HelloWorld',\n data() {\n return {\n msg: 'Welcome to Your Vue.js App'\n }\n }\n }\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/HelloWorld.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('van-button',{attrs:{\"type\":\"default\"}},[_vm._v(\"默认按钮\")]),_vm._v(\" \"),_c('van-button',{attrs:{\"type\":\"primary\"}},[_vm._v(\"主要按钮\")]),_vm._v(\" \"),_c('van-button',{attrs:{\"type\":\"info\"}},[_vm._v(\"信息按钮\")]),_vm._v(\" \"),_c('van-button',{attrs:{\"type\":\"warning\"}},[_vm._v(\"警告按钮\")]),_vm._v(\" \"),_c('van-button',{attrs:{\"type\":\"danger\"}},[_vm._v(\"危险按钮\")])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-a0448bfc\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/HelloWorld.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./HelloWorld.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./HelloWorld.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a0448bfc\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./HelloWorld.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/HelloWorld.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <van-nav-bar\n :title=\"activePage.label\"\n fixed\n ></van-nav-bar>\n <div class=\"is-relation\">\n <component :is=\"activePage.api\"></component>\n <p class=\"text-align-center is-absolute\" style=\"color: #efefef;width: 100%\">{{version}}</p>\n </div>\n <van-tabbar v-model=\"activeTabIndex\">\n <van-tabbar-item v-for=\"(page, i) in pages\" :key=\"i\" :icon=\"page.icon\">{{page.label}}</van-tabbar-item>\n </van-tabbar>\n </div>\n</template>\n\n<script>\n import Vue from 'vue';\n import {NavBar} from 'vant';\n import {Tabbar, TabbarItem} from 'vant';\n import HomeIndex from \"@/components/home-pages/HomeIndex\";\n import HelloWorld from \"@/components/HelloWorld\";\n import config from \"@/config\";\n\n Vue.use(NavBar).use(Tabbar).use(TabbarItem);\n\n export default {\n name: \"HomePage\",\n data() {\n return {\n activeTabIndex: 0,\n pages: [\n {title: '主页', label: 'Home', api: HomeIndex, icon: 'home-o'},\n // {title: '搜索', label: '搜索', api: HelloWorld, icon: 'search'},\n // {title: '朋友', label: '朋友', api: HomeIndex, icon: 'friends-o'},\n // {title: '设置', label: '设置', api: HomeIndex, icon: 'setting-o'},\n ],\n }\n },\n computed: {\n activePage() {\n return this.pages[this.activeTabIndex] || {};\n },\n version() {\n return config.version;\n }\n }\n }\n</script>\n\n<style scoped>\n\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/HomePage.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('van-nav-bar',{attrs:{\"title\":_vm.activePage.label,\"fixed\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"is-relation\"},[_c(_vm.activePage.api,{tag:\"component\"}),_vm._v(\" \"),_c('p',{staticClass:\"text-align-center is-absolute\",staticStyle:{\"color\":\"#efefef\",\"width\":\"100%\"}},[_vm._v(_vm._s(_vm.version))])],1),_vm._v(\" \"),_c('van-tabbar',{model:{value:(_vm.activeTabIndex),callback:function ($$v) {_vm.activeTabIndex=$$v},expression:\"activeTabIndex\"}},_vm._l((_vm.pages),function(page,i){return _c('van-tabbar-item',{key:i,attrs:{\"icon\":page.icon}},[_vm._v(_vm._s(page.label))])}),1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5c9e76e7\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/HomePage.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5c9e76e7\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./HomePage.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./HomePage.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./HomePage.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5c9e76e7\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./HomePage.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-5c9e76e7\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/HomePage.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"exam-root\" v-finger:swipe=\"swipe\">\n <van-nav-bar\n :title=\"examInfo.title\"\n fixed\n left-arrow\n right-text=\"目录\"\n @click-left=\"$router.back()\"\n @click-right=\"showAcButtons = !showAcButtons\"\n ></van-nav-bar>\n <div class=\"ac-qn-backdrop\" v-show=\"showAcButtons\" @click.stop=\"showAcButtons = false\">\n <div class=\"exam-p-around-small ac-qn\" @click.stop>\n <van-row>\n <van-col span=\"4\" v-for=\"(question,i) in questionsInfo\" :key=\"i\">\n <div class=\"exam-circle exam-done\" @click=\"turnTo(i)\"\n :class=\"{'exam-right':question.answer.isPass&&(isShowResult||(question.answer.isChecked&&isPractice)),'exam-error':question.answer.isMistake&&(isShowResult||(question.answer.isChecked&&isPractice)),'exam-current': questionNum === i}\">\n {{ i + 1 }}\n </div>\n </van-col>\n </van-row>\n </div>\n </div>\n <div class=\"question-box\" @dblclick.stop=\"showAcButtons = true\"\n :style=\"`width: ${totalNum*100}%;transform:translate(${-questionNum*100/totalNum}%,0)`\">\n <div class=\"question-item\" v-for=\"(question,i) in questionsInfo\" :key=\"question.hashCode\">\n <van-panel :title=\"getQuestionTitle(question)\" :desc=\"getQuestionDesc(question)\">\n <div v-if=\"question.isMulti\">\n <van-checkbox-group v-model=\"question.answer.multi.apis\" @click.stop @dblclick.stop>\n <van-cell-group>\n <van-cell v-for=\"(option, oi) in question.answerOptions\"\n clickable @click=\"toggleAnswer(i, option.api)\"\n :key=\"oi\">\n <template slot=\"title\">\n <span\n :class=\"{'right-answer':option.isRight&&isShowResult||(option.isRight&&question.answer.isChecked&&isPractice),'error-answer':!option.isRight&&isShowResult||(!option.isRight&&question.answer.isAnswered&&isPractice),'custom-title':true}\">{{\n letterIndex[oi] + '. ' + option.describe\n }}</span>\n </template>\n <van-checkbox slot=\"right-icon\" :name=\"option.api\"\n :checked-color=\"getOptionColor(question,option)\"></van-checkbox>\n </van-cell>\n </van-cell-group>\n </van-checkbox-group>\n </div>\n <div v-if=\"!question.isMulti\">\n <van-radio-group v-model=\"question.answer.single.api\">\n <van-cell-group>\n <van-cell v-for=\"(option, oi) in question.answerOptions\"\n clickable @click=\"setAnswer(i, [option.api])\"\n :key=\"oi\">\n <template slot=\"title\">\n <span\n :class=\"{'right-answer':option.isRight&&isShowResult||(option.isRight&&question.answer.isChecked&&isPractice),'error-answer':!option.isRight&&isShowResult||(!option.isRight&&question.answer.isAnswered&&isPractice),'custom-title':true}\">{{\n letterIndex[oi] + '. ' + option.describe\n }}</span>\n </template>\n <van-radio slot=\"right-icon\" :name=\"option.api\"\n :checked-color=\"getOptionColor(question,option)\"></van-radio>\n </van-cell>\n </van-cell-group>\n </van-radio-group>\n </div>\n </van-panel>\n </div>\n </div>\n <div class=\"text-align-center ac-buttons\" v-if=\"questionsInfo[questionNum]\">\n <van-button size=\"small\" v-if=\"questionNum>0\" @click=\"turnTo(questionNum-1)\">上一题</van-button>\n <van-button size=\"small\" type=\"info\" v-if=\"questionNum<totalNum-1\" @click=\"turnTo(questionNum+1)\">下一题\n </van-button>\n <van-button size=\"small\" type=\"warning\" v-if=\"isPractice&&!questionsInfo[questionNum].answer.isChecked\"\n @click=\"checkResult(questionNum)\">检查该题答案\n </van-button>\n <van-button size=\"small\" type=\"primary\" v-if=\"!hasSubmit\" @click=\"confirmSubmit\">提交\n </van-button>\n </div>\n\n </div>\n</template>\n\n<script>\nimport Vue from 'vue';\nimport {NavBar} from 'vant';\nimport {Panel} from 'vant';\nimport {Button} from 'vant';\nimport {Cell, CellGroup} from 'vant';\nimport {RadioGroup, Radio} from 'vant';\nimport {Checkbox, CheckboxGroup} from 'vant';\nimport {Dialog} from 'vant';\nimport {Row, Col} from 'vant';\nimport utils from '../../utils';\nimport {historyRecordDao, bankDao} from '../../dao'\n\nVue.use(Row).use(Col);\n// 全局注册\nVue.use(Dialog);\nVue.use(Checkbox).use(CheckboxGroup);\nVue.use(RadioGroup);\nVue.use(Radio);\nVue.use(Cell).use(CellGroup);\n\nconst defaultQuestionInfo = {\n required: true,\n score: 1,\n usingScore: false,\n type: 'option', // text, number\n describe: 'Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?',\n answerOptions: [\n {api: 'A', describe: 'Yes', isRight: true},\n {api: 'B', describe: 'No'}\n ]\n};\n\nconst defaultExamInfo = {\n title: '试题测试',\n questions: [defaultQuestionInfo]\n};\n\nVue.use(NavBar).use(Panel).use(Button);\n\nexport default {\n name: \"DoExamPage\",\n data() {\n return {\n answers: [],\n questionNum: 0,\n isShowResult: false,\n letterIndex: [...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'],\n examInfo: {},\n hasSubmit: false,\n examHashCode: 0,\n historyExams: [],\n showAcButtons: false\n }\n },\n computed: {\n totalNum() {\n return this.questions.length;\n },\n questions() {\n return (this.examInfo.questions || []).filter(\n q => this.isReviewError ? this.historyErrorHashCodes.includes(q.hashCode) : true\n ).map((q, i) => ({...q, active: i === this.questionNum}));\n },\n questionsInfo() {\n return this.questions.map(\n (q, i) => {\n if (!this.answers[i]) {\n this.answers[i] = {results: [{}], single: {}, multi: {apis: []}}\n }\n return {\n ...q,\n answer: this.answers[i] || {},\n orderNum: i + 1,\n isMulti: q.answerOptions.filter(opt => opt.isRight).length > 1\n }\n }\n )\n },\n historyErrorHashCodes() {\n return this.historyExams.filter(exam => exam.errorTimes > 0).map(exam => exam.hashCode);\n }\n },\n methods: {\n getQuestionTitle(question) {\n return [`(${this.questionNum + 1}/${this.totalNum})`, question.describe].join(' ');\n },\n getQuestionDesc(question) {\n let result = '';\n if (!question.required) {\n result += '(可选)'\n }\n if (question.type === 'option') {\n if (question.isMulti) {\n result += '多选题'\n } else {\n result += '单选题'\n }\n }\n let errorExam = this.historyExams.find(exam => exam.hashCode === question.hashCode);\n if (errorExam) {\n if (this.isReviewError) {\n if (errorExam.errorTimes) {\n result += ` (做错次数: ${errorExam.errorTimes})`;\n }\n }\n const totalTimes = errorExam.errorTimes + errorExam.rightTimes;\n if (totalTimes > 0) {\n result += `(历史正确率:${(errorExam.rightTimes / totalTimes * 100).toFixed(0)}%)`;\n }\n }\n return result;\n },\n /**\n * @param i\n * @param api {Array}\n */\n setAnswer(i, api) {\n this.answers = [...this.answers].map((answer, ai) => {\n if (ai === i) {\n answer.results = api.map(a => ({api: a}));\n answer.single.api = api[0];\n answer.multi.apis = api;\n }\n return answer;\n });\n },\n toggleAnswer(i, api) {\n let apis = this.answers[i].multi.apis;\n if (apis.includes(api)) {\n apis = apis.filter(a => a !== api);\n } else {\n apis.push(api);\n apis = [...apis];\n }\n this.setAnswer(i, apis);\n },\n checkResult(i) {\n this.answers = [...this.answers].map((answer, ai) => {\n if (i !== ai && i != null) {\n return answer;\n }\n let question = this.questions[ai];\n let rightAnswers = question.answerOptions.filter(option => option.isRight).map(option => option.api);\n answer.results.forEach(res => {\n res.isMistake = !rightAnswers.includes(res.api);\n });\n answer.isAnswered = answer.results.filter(res => res.api).length > 0;\n if (!answer.isChecked && answer.isAnswered) {\n answer.isMistake = answer.results.length !== rightAnswers.length || !!answer.results.find(res => res.isMistake);\n answer.isPass = answer.isAnswered && !answer.isMistake;\n answer.isChecked = true;\n }\n return answer;\n })\n },\n turnTo(i) {\n this.questionNum = i;\n },\n confirmSubmit() {\n Dialog.confirm({\n title: '提交答案',\n message: '确认提交?'\n }).then(() => {\n this.submit();\n }).catch(e => {\n console.log(e);\n });\n },\n submit() {\n this.checkResult();\n let answeredNum = this.questionsInfo.filter(q => q.answer.isAnswered).length;\n if (answeredNum < this.totalNum && this.requireAllDone) {\n Dialog.alert({message: '题目还没有答完:' + `${answeredNum}/${this.totalNum}`});\n return;\n }\n let rightNum = this.questionsInfo.filter(q => q.answer.isPass).length;\n let rightRate = (rightNum / this.totalNum) * 100 + '%';\n\n // 录入错误信息\n let checkedQuestion = this.questionsInfo.filter(q => q.answer.isChecked);\n checkedQuestion.forEach(question => {\n historyRecordDao.queryByHashCode(question.hashCode).then(\n codeInfo => {\n if (!codeInfo) {\n codeInfo = {relatedQuestion: question.hashCode, errorTimes: 0};\n }\n if (question.answer.isPass) {\n codeInfo.rightTimes++;\n } else {\n codeInfo.errorTimes++;\n }\n historyRecordDao.upsert(codeInfo)\n .then(() => {\n console.log('做题信息已保存');\n });\n }\n );\n });\n\n // 显示答题结果\n this.isShowResult = true;\n Dialog.alert({message: '答题结束,成绩如下:' + `正确:${rightNum}(总共:${this.totalNum})(正确率:${rightRate})`});\n this.hasSubmit = true;\n },\n adaptExamConfig() {\n let examInfo = {...defaultExamInfo, ...this.examConfig};\n examInfo.questions = examInfo.questions.map(q => ({\n ...defaultQuestionInfo, ...q, hashCode: q.hashCode,\n answerOptions: !q.answerOptions ? [] : q.answerOptions.map(a => ({\n ...a,\n api: utils.getHashCode(a) + ''\n }))\n })).filter(q => {\n if (!q.describe || q.answerOptions.length === 0) {\n console.log('错误的题目(无描述或无答案).', q);\n return false;\n }\n // 去掉无正确答案的问题\n const checkNoAnswer = utils.groupArray(q.answerOptions, 'isRight');\n if (checkNoAnswer.length === 1 && !checkNoAnswer[0][0].isRight) {\n console.log('错误的题目(无正确答案).', q);\n return false;\n }\n // 去掉问题中重复的答案\n const checkDuplicate = utils.groupArray(q.answerOptions, 'describe');\n const resultAnswers = checkDuplicate.map(checks => {\n if (checks.length > 1) {\n const result = {...checks[0]};\n if (utils.groupArray(checks, 'isRight').length !== checks.length) {\n result.invalid = true;\n }\n return result;\n }\n return checks[0];\n });\n // 去掉答案中有重复描述且对错不一的问题\n if (resultAnswers.find(r => r.invalid)) {\n console.log('错误的题目(答案中有重复描述且对错不一).', q);\n return false;\n }\n q.answerOptions = utils.randomSort(resultAnswers);\n return true;\n });\n examInfo.questions = utils.randomSort(examInfo.questions);\n\n this.examInfo = examInfo;\n this.examHashCode = this.examConfig.hashCode;\n this.loadHistoryExamInfo();\n },\n getOptionColor(question, option) {\n if (this.isShowResult || (this.isPractice && question.answer.isChecked)) {\n return question.answer.results.map(res => res.api).includes(option.api) && option.isRight ? '#44af11' : '#cd0000'\n }\n return '#1989fa';\n },\n loadHistoryExamInfo() {\n historyRecordDao.queryMany(this.examConfig.questions.map(q => q.hashCode))\n .then(records => {\n // console.log(records.map(r => r.relatedQuestion));\n this.historyExams = records.map(r => ({...r, hashCode: r.relatedQuestion}));\n // console.log(this.historyExams);\n });\n // const errorMapKey = 'errorMap_' + this.examHashCode;\n // let errorMap = utils.storage.getItem(errorMapKey);\n // if (errorMap) {\n // this.historyExams = Object.entries(errorMap).map(([key, value]) => ({hashCode: key, ...value}));\n // }\n },\n swipe: function (evt) {\n switch (evt.direction) {\n case 'Left':\n if (this.questionNum < this.totalNum - 1) {\n this.turnTo(this.questionNum + 1);\n }\n break;\n case 'Right':\n if (this.questionNum > 0) {\n this.turnTo(this.questionNum - 1);\n }\n break;\n case 'Up':\n this.showAcButtons = false\n break;\n case 'Down':\n this.showAcButtons = true\n break\n default:\n }\n }\n },\n props: {\n examConfig: {\n type: Object,\n default() {\n return defaultExamInfo;\n }\n },\n isReviewError: {\n type: Boolean,\n default: false\n },\n isNew: {\n type: Boolean,\n default: false\n },\n requireAllDone: {\n type: Boolean,\n default: false\n },\n isPractice: {\n type: Boolean,\n default: true\n }\n },\n watch: {\n examConfig() {\n this.adaptExamConfig();\n }\n },\n mounted() {\n this.adaptExamConfig();\n console.log('开始答题');\n try {\n plus.device.setWakelock(true);\n console.log('打开屏幕常亮');\n } catch (e) {\n // ignore\n }\n },\n destroyed() {\n console.log('结束答题');\n try {\n plus.device.setWakelock(false);\n console.log('关闭屏幕常亮');\n } catch (e) {\n // ignore\n }\n }\n}\n</script>\n\n<style scoped>\n.exam-root {\n overflow-x: hidden;\n top: 0;\n bottom: 0\n}\n\nspan.error-answer {\n color: #cd0000;\n}\n\nspan.right-answer {\n color: #44af11;\n}\n\nspan.custom-title {\n word-break: break-word;\n}\n\n.exam-circle {\n height: 2rem;\n width: 2rem;\n border: 1px solid #1989fa;\n border-radius: 50%;\n line-height: 2rem;\n text-align: center;\n color: #1989fa;\n cursor: pointer;\n margin-bottom: .5rem;\n}\n\n.exam-circle.exam-error {\n color: #cd0000;\n border-color: #cd0000;\n}\n\n.exam-circle.exam-right {\n color: #44af11;\n border-color: #44af11;\n}\n\n.exam-circle.exam-current {\n background-color: #1989fa;\n color: white;\n}\n\n.exam-circle.exam-error.exam-current {\n background-color: #cd0000;\n color: white;\n}\n\n.exam-circle.exam-right.exam-current {\n background-color: #44af11;\n color: white;\n}\n\n.question-box {\n position: relative;\n width: 100%;\n display: flex;\n transition: transform .35s;\n padding-bottom: 70px;\n padding-top: 46px;\n}\n\n.question-item {\n width: 100%;\n}\n\n.question-enter, .question-leave-to {\n opacity: 0;\n}\n\n.ac-buttons {\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 20px;\n box-sizing: border-box;\n background: #fff;\n box-shadow: 0 -1px 5px 0 rgba(0, 0, 0, .1);\n}\n\n.ac-qn {\n z-index: 100;\n background: #fff;\n box-shadow: 0 1px 5px 0 rgba(0, 0, 0, .1);\n}\n\n.ac-qn-backdrop{\n position: fixed;\n top: 46px;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, .5);\n z-index: 1;\n}\n\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/exam/DoExamPage.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"finger\",rawName:\"v-finger:swipe\",value:(_vm.swipe),expression:\"swipe\",arg:\"swipe\"}],staticClass:\"exam-root\"},[_c('van-nav-bar',{attrs:{\"title\":_vm.examInfo.title,\"fixed\":\"\",\"left-arrow\":\"\",\"right-text\":\"目录\"},on:{\"click-left\":function($event){return _vm.$router.back()},\"click-right\":function($event){_vm.showAcButtons = !_vm.showAcButtons}}}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showAcButtons),expression:\"showAcButtons\"}],staticClass:\"ac-qn-backdrop\",on:{\"click\":function($event){$event.stopPropagation();_vm.showAcButtons = false}}},[_c('div',{staticClass:\"exam-p-around-small ac-qn\",on:{\"click\":function($event){$event.stopPropagation();}}},[_c('van-row',_vm._l((_vm.questionsInfo),function(question,i){return _c('van-col',{key:i,attrs:{\"span\":\"4\"}},[_c('div',{staticClass:\"exam-circle exam-done\",class:{'exam-right':question.answer.isPass&&(_vm.isShowResult||(question.answer.isChecked&&_vm.isPractice)),'exam-error':question.answer.isMistake&&(_vm.isShowResult||(question.answer.isChecked&&_vm.isPractice)),'exam-current': _vm.questionNum === i},on:{\"click\":function($event){return _vm.turnTo(i)}}},[_vm._v(\"\\n \"+_vm._s(i + 1)+\"\\n \")])])}),1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"question-box\",style:((\"width: \" + (_vm.totalNum*100) + \"%;transform:translate(\" + (-_vm.questionNum*100/_vm.totalNum) + \"%,0)\")),on:{\"dblclick\":function($event){$event.stopPropagation();_vm.showAcButtons = true}}},_vm._l((_vm.questionsInfo),function(question,i){return _c('div',{key:question.hashCode,staticClass:\"question-item\"},[_c('van-panel',{attrs:{\"title\":_vm.getQuestionTitle(question),\"desc\":_vm.getQuestionDesc(question)}},[(question.isMulti)?_c('div',[_c('van-checkbox-group',{on:{\"click\":function($event){$event.stopPropagation();},\"dblclick\":function($event){$event.stopPropagation();}},model:{value:(question.answer.multi.apis),callback:function ($$v) {_vm.$set(question.answer.multi, \"apis\", $$v)},expression:\"question.answer.multi.apis\"}},[_c('van-cell-group',_vm._l((question.answerOptions),function(option,oi){return _c('van-cell',{key:oi,attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.toggleAnswer(i, option.api)}}},[_c('template',{slot:\"title\"},[_c('span',{class:{'right-answer':option.isRight&&_vm.isShowResult||(option.isRight&&question.answer.isChecked&&_vm.isPractice),'error-answer':!option.isRight&&_vm.isShowResult||(!option.isRight&&question.answer.isAnswered&&_vm.isPractice),'custom-title':true}},[_vm._v(_vm._s(_vm.letterIndex[oi] + '. ' + option.describe))])]),_vm._v(\" \"),_c('van-checkbox',{attrs:{\"slot\":\"right-icon\",\"name\":option.api,\"checked-color\":_vm.getOptionColor(question,option)},slot:\"right-icon\"})],2)}),1)],1)],1):_vm._e(),_vm._v(\" \"),(!question.isMulti)?_c('div',[_c('van-radio-group',{model:{value:(question.answer.single.api),callback:function ($$v) {_vm.$set(question.answer.single, \"api\", $$v)},expression:\"question.answer.single.api\"}},[_c('van-cell-group',_vm._l((question.answerOptions),function(option,oi){return _c('van-cell',{key:oi,attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.setAnswer(i, [option.api])}}},[_c('template',{slot:\"title\"},[_c('span',{class:{'right-answer':option.isRight&&_vm.isShowResult||(option.isRight&&question.answer.isChecked&&_vm.isPractice),'error-answer':!option.isRight&&_vm.isShowResult||(!option.isRight&&question.answer.isAnswered&&_vm.isPractice),'custom-title':true}},[_vm._v(_vm._s(_vm.letterIndex[oi] + '. ' + option.describe))])]),_vm._v(\" \"),_c('van-radio',{attrs:{\"slot\":\"right-icon\",\"name\":option.api,\"checked-color\":_vm.getOptionColor(question,option)},slot:\"right-icon\"})],2)}),1)],1)],1):_vm._e()])],1)}),0),_vm._v(\" \"),(_vm.questionsInfo[_vm.questionNum])?_c('div',{staticClass:\"text-align-center ac-buttons\"},[(_vm.questionNum>0)?_c('van-button',{attrs:{\"size\":\"small\"},on:{\"click\":function($event){return _vm.turnTo(_vm.questionNum-1)}}},[_vm._v(\"上一题\")]):_vm._e(),_vm._v(\" \"),(_vm.questionNum<_vm.totalNum-1)?_c('van-button',{attrs:{\"size\":\"small\",\"type\":\"info\"},on:{\"click\":function($event){return _vm.turnTo(_vm.questionNum+1)}}},[_vm._v(\"下一题\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.isPractice&&!_vm.questionsInfo[_vm.questionNum].answer.isChecked)?_c('van-button',{attrs:{\"size\":\"small\",\"type\":\"warning\"},on:{\"click\":function($event){return _vm.checkResult(_vm.questionNum)}}},[_vm._v(\"检查该题答案\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.hasSubmit)?_c('van-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"},on:{\"click\":_vm.confirmSubmit}},[_vm._v(\"提交\\n \")]):_vm._e()],1):_vm._e()],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4b469db2\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/exam/DoExamPage.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4b469db2\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./DoExamPage.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./DoExamPage.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./DoExamPage.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4b469db2\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./DoExamPage.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-4b469db2\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/exam/DoExamPage.vue\n// module id = null\n// module chunks = ","import Vue from 'vue'\nimport Router from 'vue-router'\nimport HomePage from \"@/components/HomePage\";\nimport DoExamPage from \"@/components/exam/DoExamPage\";\n\nVue.use(Router);\n\nexport default new Router({\n routes: [\n {\n path: '/',\n name: 'HomePage',\n component: HomePage\n },\n {\n path: '/exam',\n name: 'DoExamPage',\n component: DoExamPage,\n props: true\n }\n ]\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","import Vue from 'vue'\nimport axios from 'axios'\nimport jsonp from 'jsonp'\nimport Utils from '../utils'\nimport AlloyFinger from 'alloyfinger'\nimport AlloyFingerPlugin from 'alloyfinger/vue/alloy_finger_vue'\n\nVue.use(AlloyFingerPlugin,{\n AlloyFinger\n});\n\nVue.prototype.$http = axios;\nVue.prototype.$http.jsonp = jsonp;\n\nif (!Object.fromEntries) {\n Object.fromEntries = Utils.fromEntries;\n}\n\nif (!Array.prototype.flat) {\n try {\n Object.defineProperty(Array.prototype, 'flat', {\n value: function (deep) {\n return Utils.flat(this, deep);\n },\n enumerable: false\n })\n } catch (e) {\n Array.prototype.flat = function (deep) {\n return Utils.flat(this, deep);\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/index.js","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\nimport App from './App'\nimport router from './router'\nimport './assets/common.css';\nimport './plugins';\n\nVue.config.productionTip = false;\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n router,\n components: { App },\n template: '<App/>'\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js"],"sourceRoot":""}