@palerock/exam-qa 1.0.0 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
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?8d0c","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","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","existsMap","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.4e58d03b72ab044886ef.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.4',\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 = '../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 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-1274651e\",\"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-1274651e\\\",\\\"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-1274651e\\\",\\\"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-1274651e\"\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":""}
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap 821fe28a55a1789e0de5"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,KAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.3ad1d5771e9b13dbdad2.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 821fe28a55a1789e0de5"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap 0fd4665f98ed9c6bbef2"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,KAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.3ad1d5771e9b13dbdad2.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 0fd4665f98ed9c6bbef2"],"sourceRoot":""}
@@ -0,0 +1,305 @@
1
+ {
2
+ "title": "Salesforce-Sales-Cloud-Certification(81)-[Set-1]",
3
+ "category": "Salesforce Sales Cloud",
4
+ "questions": [
5
+ {
6
+ "describe": "Think about he metrics that UP will use to measure the success of the Sales Cloud implementation. How would you design a solution to measure success for UP?",
7
+ "answerOptions": [
8
+ {
9
+ "isRight": false,
10
+ "describe": "Create an analytic snapshot for standard reports"
11
+ },
12
+ {
13
+ "isRight": false,
14
+ "describe": "Customize the Measure Success standard report"
15
+ },
16
+ {
17
+ "isRight": false,
18
+ "describe": "Create a dashboard based on standard reports"
19
+ },
20
+ {
21
+ "isRight": true,
22
+ "describe": "Download and customize a user adoption dashboard from the AppExchange."
23
+ }
24
+ ]
25
+ },
26
+ {
27
+ "describe": "Think about UP's biggest pain points around leads. What would you recommend to improve the quality of leads passed from marketing to sales? (2 opt)",
28
+ "answerOptions": [
29
+ {
30
+ "isRight": false,
31
+ "describe": "Create a workflow rule to send email alerts to the sales manager."
32
+ },
33
+ {
34
+ "isRight": true,
35
+ "describe": "Create custom fields to capture critical lead information."
36
+ },
37
+ {
38
+ "isRight": true,
39
+ "describe": "Implement validation rules for leads."
40
+ },
41
+ {
42
+ "isRight": false,
43
+ "describe": "Create web-to-lead auto-response rules."
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ "describe": "Think about the data access requirements for leads. UP wants all sales and marketing users to be able to see all leads, but only the Marketing Specialist should be able to create and modify lead data. What organization-wide defaults would you use for the Lead object to meet this requirement.",
49
+ "answerOptions": [
50
+ {
51
+ "isRight": false,
52
+ "describe": "Private"
53
+ },
54
+ {
55
+ "isRight": true,
56
+ "describe": "Public Read-Only"
57
+ },
58
+ {
59
+ "isRight": false,
60
+ "describe": "Public Read-Write"
61
+ },
62
+ {
63
+ "isRight": false,
64
+ "describe": "Public Read/Write Transfer"
65
+ }
66
+ ]
67
+ },
68
+ {
69
+ "describe": "Think about the lead process at UP. How would you design a solution to support their process. (2 opt)",
70
+ "answerOptions": [
71
+ {
72
+ "isRight": true,
73
+ "describe": "Use lead status to capture if the lead is contacted, open, qualified, of unqualified."
74
+ },
75
+ {
76
+ "isRight": true,
77
+ "describe": "Use a workflow rule to automatically assign follow-up tasks for open leads."
78
+ },
79
+ {
80
+ "isRight": false,
81
+ "describe": "Create an approval process for each stage in the lead process."
82
+ },
83
+ {
84
+ "isRight": false,
85
+ "describe": "Create different lead processes for each line of business."
86
+ }
87
+ ]
88
+ },
89
+ {
90
+ "describe": "You can track Assets through Accounts, Contacts, Products, or Cases.",
91
+ "answerOptions": [
92
+ {
93
+ "isRight": true,
94
+ "describe": "True"
95
+ },
96
+ {
97
+ "isRight": false,
98
+ "describe": "False"
99
+ }
100
+ ]
101
+ },
102
+ {
103
+ "describe": "You can track only Assets sold by your company.",
104
+ "answerOptions": [
105
+ {
106
+ "isRight": false,
107
+ "describe": "True"
108
+ },
109
+ {
110
+ "isRight": true,
111
+ "describe": "False"
112
+ }
113
+ ]
114
+ },
115
+ {
116
+ "describe": "Which of the following statements about Standard and Custom Price Books are accurate? (2 opt)",
117
+ "answerOptions": [
118
+ {
119
+ "isRight": true,
120
+ "describe": "A Standard Price Book includes a master list of all Products with their associated Standard Prices."
121
+ },
122
+ {
123
+ "isRight": false,
124
+ "describe": "A Custom Price Book includes a master list of all Products with their associated Custom Prices."
125
+ },
126
+ {
127
+ "isRight": true,
128
+ "describe": "A Custom Price Book is a subset of the Products listed in the Standard Price Book."
129
+ }
130
+ ]
131
+ },
132
+ {
133
+ "describe": "There are four steps to managing Products and Price Books. Can you put the steps in order?\n1. Create Product\n2. Create Custom Price Book\n3. Defined Standard Price\n4. Set List Price",
134
+ "answerOptions": [
135
+ {
136
+ "isRight": false,
137
+ "describe": "1, 2, 3, 4"
138
+ },
139
+ {
140
+ "isRight": false,
141
+ "describe": "4, 1, 2, 3"
142
+ },
143
+ {
144
+ "isRight": false,
145
+ "describe": "2, 1, 4, 2"
146
+ },
147
+ {
148
+ "isRight": true,
149
+ "describe": "1, 3, 2, 4"
150
+ }
151
+ ]
152
+ },
153
+ {
154
+ "describe": "Your organization sells a product that requires your customers to pay all at once but receive the product in increments. What should be your first step in setting up Product schedules?",
155
+ "answerOptions": [
156
+ {
157
+ "isRight": true,
158
+ "describe": "Enable creation of Quantity Schedules"
159
+ },
160
+ {
161
+ "isRight": false,
162
+ "describe": "Enable creation of Revenue Schedules"
163
+ },
164
+ {
165
+ "isRight": false,
166
+ "describe": "Set up default Quantity schedules for Products"
167
+ },
168
+ {
169
+ "isRight": false,
170
+ "describe": "Set up default Revenue schedules for Products"
171
+ }
172
+ ]
173
+ },
174
+ {
175
+ "describe": "In addition to setting the standard price, what must you also do in order to add a Product to a Custom Price Book?",
176
+ "answerOptions": [
177
+ {
178
+ "isRight": false,
179
+ "describe": "Enter a Product Code"
180
+ },
181
+ {
182
+ "isRight": false,
183
+ "describe": "Enter a Product Description"
184
+ },
185
+ {
186
+ "isRight": true,
187
+ "describe": "Check the Active checkbox"
188
+ },
189
+ {
190
+ "isRight": false,
191
+ "describe": "Select a Product Family"
192
+ }
193
+ ]
194
+ },
195
+ {
196
+ "describe": "Which of these steps should take place before setting a List Price for a Product? (2 opt)",
197
+ "answerOptions": [
198
+ {
199
+ "isRight": false,
200
+ "describe": "Update all items in the Standard Price Book"
201
+ },
202
+ {
203
+ "isRight": false,
204
+ "describe": "Update all items in the Custom Price Book"
205
+ },
206
+ {
207
+ "isRight": true,
208
+ "describe": "Create the Product"
209
+ },
210
+ {
211
+ "isRight": true,
212
+ "describe": "Define the Product's Standard Price"
213
+ },
214
+ {
215
+ "isRight": false,
216
+ "describe": "Specify a Quantity or Revenue Schedule"
217
+ }
218
+ ]
219
+ },
220
+ {
221
+ "describe": "Your org-wide defaults for Price Books are set to \"No Access\". What should you do to enable your Sales Reps to view the South America Price Book and add Products in this Price Book to Opportunities?",
222
+ "answerOptions": [
223
+ {
224
+ "isRight": false,
225
+ "describe": "Set the org-wide defaults to \"Use\", then manually change all non Sales Reps' access to \"No Access\""
226
+ },
227
+ {
228
+ "isRight": false,
229
+ "describe": "Set the org-wide defaults for all Sales Reps to \"Use\""
230
+ },
231
+ {
232
+ "isRight": true,
233
+ "describe": "Grant specific \"Use\" access rights to Sales Reps for the South America Price Book"
234
+ },
235
+ {
236
+ "isRight": false,
237
+ "describe": "Change all Custom Price Books' access for Sales Reps to \"Use\""
238
+ }
239
+ ]
240
+ },
241
+ {
242
+ "describe": "Your org-wide defaults for access rights to Price Books are set to \"Use\", but only Sales Reps should have access to Price Books. What should be your first step?",
243
+ "answerOptions": [
244
+ {
245
+ "isRight": true,
246
+ "describe": "Change the org-wide default setting to \"No Access\""
247
+ },
248
+ {
249
+ "isRight": false,
250
+ "describe": "Change the org-wide default setting to \"View Only\""
251
+ },
252
+ {
253
+ "isRight": false,
254
+ "describe": "Leave the org-wide default setting, but change the Sales Reps' access rights"
255
+ },
256
+ {
257
+ "isRight": false,
258
+ "describe": "Change the Sales Reps' access rights to \"Use'"
259
+ }
260
+ ]
261
+ },
262
+ {
263
+ "describe": "Your company has decided they want to track payment and deliveries for their products and services. Place the steps in order:\n1. Set up default schedules for any products that involve regular payments or delivery.\n2. Do not set up default schedules for products that involve payments or deliveries that are unique to each opportunity.\n3. Enable Scheduling for all products.",
264
+ "answerOptions": [
265
+ {
266
+ "isRight": false,
267
+ "describe": "1, 2, 3"
268
+ },
269
+ {
270
+ "isRight": false,
271
+ "describe": "2, 1, 3"
272
+ },
273
+ {
274
+ "isRight": true,
275
+ "describe": "3, 1, 2"
276
+ },
277
+ {
278
+ "isRight": false,
279
+ "describe": "2, 3, 1"
280
+ }
281
+ ]
282
+ },
283
+ {
284
+ "describe": "Your company sells service contracts where the customer pays once a year for a monthly service package. What type of schedule should you set up?",
285
+ "answerOptions": [
286
+ {
287
+ "isRight": true,
288
+ "describe": "Default Quantity Schedule"
289
+ },
290
+ {
291
+ "isRight": false,
292
+ "describe": "Default Revenue Schedule"
293
+ },
294
+ {
295
+ "isRight": false,
296
+ "describe": "Default Revenue and Quantity Schedule"
297
+ },
298
+ {
299
+ "isRight": false,
300
+ "describe": "Don't create any default schedule"
301
+ }
302
+ ]
303
+ }
304
+ ]
305
+ }