From b636ce580856ae22a09ea126ae0e53539d699246 Mon Sep 17 00:00:00 2001 From: 闫增涛 <1829501689@qq.com> Date: 星期五, 17 五月 2024 15:04:43 +0800 Subject: [PATCH] 页眉、ui替换 --- src/assets/methods/examination.js | 374 ++++++++++++++++++++++++++++++++--------------------- 1 files changed, 227 insertions(+), 147 deletions(-) diff --git a/src/assets/methods/examination.js b/src/assets/methods/examination.js index 132c0ed..a1dffd6 100644 --- a/src/assets/methods/examination.js +++ b/src/assets/methods/examination.js @@ -1,152 +1,232 @@ -import {activeBook} from '@/assets/js/config' -import MG from '@/assets/js/middleGround/WebMiddleGroundApi' - const getQuestionList = (rootCmsItemId,questionList) => { +import { activeBook } from "@/assets/js/config"; +import MG from "@/assets/js/middleGround/WebMiddleGroundApi"; +import getPublicImage from "@/assets/js/middleGround/tool"; +const getQuestionList = async (oldList,questionList) => { let cardList = [ - + { + catalogName: "鍗曢�夐", + infoList: [], + }, + { + catalogName: "鍒ゆ柇棰�", + infoList: [], + }, + { + catalogName: "澶氶�夐", + infoList: [], + }, + { + catalogName: "濉┖棰�", + infoList: [], + }, + { + catalogName: "绠�绛旈", + infoList: [], + }, ]; - let query = { - path: '*', - cmsPath: rootCmsItemId, - cmsType: '*', - productId: activeBook.bookId, - queryType: '*', - itemIds: questionList.map((item) => item + ''), - itemFields: { - Embedded_QuestionBank_Stem: [], - Embedded_QuestionBank_AnalysisCon: [], - Embedded_QuestionBank_Answer: [], - Embedded_QuestionBank_Option: [], - Embedded_QuestionBank_QuestionType: [], - Embedded_QuestionBank_StemStyle: [], - Embedded_QuestionBank_OptionStyle: [], - Embedded_QuestionBank_KnowledgePoint: [], - Embedded_QuestionBank_Difficulty: [] + let singleChoiceArr = []; // 鍗曢�� + let judgeArr = []; // 鍒ゆ柇 + let shortArr = []; // 绠�绛� + let multipleChoiceArr = []; // 澶氶�� + let completionArr = []; // 濉┖ + for (let qindex = 0; qindex < questionList.length; qindex++) { + const qitem = questionList[qindex]; + let query = { + path: "*", + cmsPath: activeBook.rootCmsItemId, + cmsType: "*", + productId: activeBook.bookId, + queryType: "*", + itemIds: qitem + "", + itemFields: { + Embedded_QuestionBank_Stem: [], + Embedded_QuestionBank_AnalysisCon: [], + Embedded_QuestionBank_Answer: [], + Embedded_QuestionBank_Option: [], + Embedded_QuestionBank_QuestionType: [], + Embedded_QuestionBank_StemStyle: [], + Embedded_QuestionBank_OptionStyle: [], + Embedded_QuestionBank_KnowledgePoint: [], + Embedded_QuestionBank_Difficulty: [], + }, + }; + const res = await MG.store.getProductDetail(query); + res.datas.cmsDatas[0].datas.forEach((item, index) => { + let oldObj = {} + if(oldList) { + oldObj = oldList.find(item => item.id == qitem) + } + const questionObj = { + number: index + 1, // 棰樺彿 + id: item.id, + stem: + item.Embedded_QuestionBank_QuestionType == "completion" + ? JSON.parse(item.Embedded_QuestionBank_Stem) + .stemTxt.replaceAll("<vacancy>", ",input,") + .split(",") + : JSON.parse(item.Embedded_QuestionBank_Stem), // 棰樺共 + answer: item.Embedded_QuestionBank_Answer, // 绛旀 + option: item.Embedded_QuestionBank_Option + ? JSON.parse(item.Embedded_QuestionBank_Option) + : "", // 閫夋嫨棰橀�夐」 + analysisCon: item.Embedded_QuestionBank_AnalysisCon, // 瑙f瀽 + questionType: item.Embedded_QuestionBank_QuestionType, // 棰樺瀷 + optionStyle: item.Embedded_QuestionBank_OptionStyle, // 閫夐」鏄剧ず绫诲瀷 + stemStyle: item.Embedded_QuestionBank_StemStyle, // 棰樺共鏄剧ず绫诲瀷 + difficulty: item.Embedded_QuestionBank_Difficulty + ? 4 - item.Embedded_QuestionBank_Difficulty + : 0, // 闅惧害绛夌骇 + userAnswer:oldObj ? oldObj.userAnswer : + item.Embedded_QuestionBank_QuestionType == "completion" || + item.Embedded_QuestionBank_QuestionType == "multipleChoice" + ? [] + : "", + isSubmit: false, // 鏌ョ湅瑙f瀽 + isRight: null, // 鏄惁姝g‘ + isComplete: false, + isCollect: true, + isUnfold: "", + }; + // 澶氶�夊拰濉┖绛旀鑲负鏁扮粍锛岃杞崲JSON鏍煎紡 + if ( + questionObj.questionType == "completion" || + questionObj.questionType == "multipleChoice" + ) { + try { + questionObj.answer = JSON.parse(questionObj.answer).toString(); + } catch (error) { + questionObj.answer = item.Embedded_QuestionBank_Answer; + } + } + // 濉┖棰樻敼閫� + if (questionObj.questionType == "completion") { + let index = 0; + for (let i = 0; i < questionObj.stem.length; i++) { + const item = questionObj.stem[i]; + if (item == "input") { + questionObj.stem[i] = { + num: index, + data: "input", + }; + questionObj.userAnswer[index] = ""; + index++; + } + } + } + // 鑾峰彇鍥剧墖 + if ( + questionObj.stemStyle == "Image" || + questionObj.stemStyle == "TxtAndImage" + ) { + questionObj.stem.stemImage = getPublicImage( + questionObj.stem.stemImage, + 150 + ); + } + if ( + questionObj.optionStyle == "Image" || + questionObj.optionStyle == "TxtAndImage" + ) { + questionObj.option.forEach((optionItem) => { + if (optionItem.img) + optionItem.img = getPublicImage(optionItem.img, 150); + }); + } + // 棰樺共瀵屾枃鏈鐞� + if (questionObj.stemStyle == "RichText") { + // questionObj.option.txt = '' + questionObj.stem.stemTxt = questionObj.stem.stemTxt + .replace( + /\<img/gi, + '<img style="max-width: 300rpx !important;object-fit: contain;" class="stem-rich-img" ' + ) + .replace(/\<p/gi, '<p class="stem-rich-p"') + .replace("../file", app.config.requestCtx + "/file"); + } + // 閫夐」瀵屾枃鏈鐞� + if ( + questionObj.optionStyle == "RichText" && + (questionObj.questionType == "singleChoice" || + questionObj.questionType == "judge" || + questionObj.questionType == "multipleChoice") + ) { + questionObj.option.forEach((item) => { + if (item.txt) + item.txt = item.txt + .replace(/\<img/gi, '<img class="option-rich-img"') + .replace(/\<p/gi, '<p class="stem-rich-p"') + .replace("../file", app.config.requestCtx + "/file"); + }); + } + // 瑙f瀽瀵屾枃鏈鐞� + if ( + questionObj.analysisCon && + typeof questionObj.analysisCon == "string" + ) { + questionObj.analysisCon = questionObj.analysisCon.replace( + /\<img/gi, + '<img style="max-width: 300rpx !important;object-fit: contain;" class="stem-rich-img" ' + ); + } + // 鍚姏棰樹慨鏀� + // if (questionObj.questionType == 'singleChoice') { + // const src = this.extractSourceSrc(questionObj.stem.stemTxt) + // if (src) { + // questionObj.src = src + // questionObj.stem.stemTxt = this.removeVideoAndAudioTags(questionObj.stem.stemTxt) + // } + // } + if (item.Embedded_QuestionBank_QuestionType == "judge") { + questionObj.type = "鍒ゆ柇棰�"; + judgeArr.push(questionObj); + } else if (item.Embedded_QuestionBank_QuestionType == "singleChoice") { + questionObj.type = "鍗曢�夐"; + singleChoiceArr.push(questionObj); + } else if ( + item.Embedded_QuestionBank_QuestionType == "multipleChoice" + ) { + questionObj.type = "澶氶�夐"; + multipleChoiceArr.push(questionObj); + } else if (item.Embedded_QuestionBank_QuestionType == "completion") { + questionObj.type = "濉┖棰�"; + completionArr.push(questionObj); + } else if (item.Embedded_QuestionBank_QuestionType == "shortAnswer") { + questionObj.type = "绠�绛旈"; + shortArr.push(questionObj); + } + }); + } + cardList[0].infoList = singleChoiceArr + cardList[1].infoList = judgeArr + cardList[2].infoList = multipleChoiceArr + cardList[3].infoList = completionArr + cardList[4].infoList = shortArr + for (let index = 0; index < cardList.length; index++) { + const item = cardList[index]; + for (let cindex = 0; cindex < item.infoList.length; cindex++) { + const citem = item.infoList[cindex]; + citem.number = cindex + 1; } } - MG.store.getProductDetail(query).then((res) => { - console.log('棰樼洰鍒楄〃',res); - // res.datas.cmsDatas[0].datas.forEach((item, index) => { - // let oldObj = ""; - // if (oldList) - // oldObj = oldList.find((oldItem) => oldItem.id == item.id); - // let questionObj = { - // // num: index, // 棰樺彿 - // id: item.id, - // type: pathitem.name, - // stem: - // item.Embedded_QuestionBank_QuestionType == "completion" - // ? JSON.parse(item.Embedded_QuestionBank_Stem) - // .stemTxt.replaceAll("<vacancy>", ",input,") - // .split(",") - // : JSON.parse(item.Embedded_QuestionBank_Stem), // 棰樺共 - // answer: item.Embedded_QuestionBank_Answer, // 绛旀 - // option: item.Embedded_QuestionBank_Option - // ? JSON.parse(item.Embedded_QuestionBank_Option) - // : "", // 閫夋嫨棰橀�夐」 - // analysisCon: item.Embedded_QuestionBank_AnalysisCon, // 瑙f瀽 - // questionType: item.Embedded_QuestionBank_QuestionType, // 棰樺瀷 - // optionStyle: item.Embedded_QuestionBank_OptionStyle, // 閫夐」鏄剧ず绫诲瀷 - // stemStyle: item.Embedded_QuestionBank_StemStyle, // 棰樺共鏄剧ず绫诲瀷 - // difficulty: item.Embedded_QuestionBank_Difficulty - // ? 4 - item.Embedded_QuestionBank_Difficulty - // : 0, // 闅惧害绛夌骇 - // userAnswer: oldObj - // ? oldObj.userAnswer - // : item.Embedded_QuestionBank_QuestionType == "completion" || - // item.Embedded_QuestionBank_QuestionType == "multipleChoice" - // ? [] - // : "", - // isUserAnswer: oldObj - // ? this.isHaveAnswer(oldObj.userAnswer) - // : false, - // isRight: oldObj ? oldObj.isRight : null, - // isComplete: oldObj ? oldObj.isComplete : false, - // isCollect: false, - // isUnfold: "", // 鎺у埗瑙f瀽鐨勬姌鍙犻潰鏉挎槸鍚﹀睍寮� - // }; - // // 澶氶�夊拰濉┖绛旀鑲负鏁扮粍锛岃杞崲JSON鏍煎紡 - // if ( - // questionObj.questionType == "completion" || - // questionObj.questionType == "multipleChoice" - // ) { - // try { - // questionObj.answer = JSON.parse(questionObj.answer).toString(); - // } catch (error) { - // questionObj.answer = item.Embedded_QuestionBank_Answer; - // } - // } - // // 濉┖棰樻敼閫� - // if (questionObj.questionType == "completion") { - // let index = 0; - // for (let i = 0; i < questionObj.stem.length; i++) { - // const item = questionObj.stem[i]; - // if (item == "input") { - // questionObj.stem[i] = { - // num: index, - // data: "input", - // }; - // if (!oldObj) questionObj.userAnswer[index] = ""; - // index++; - // } - // } - // } - // // 棰樺共瀵屾枃鏈鐞� - // if (questionObj.stemStyle == "RichText") { - // // questionObj.option.txt = '' - // questionObj.stem.stemTxt = questionObj.stem.stemTxt - // .replace( - // /\<img/gi, - // '<img style="max-width: 300rpx !important;object-fit: contain;" class="stem-rich-img" ' - // ) - // .replace(/\<p/gi, '<p class="stem-rich-p"') - // .replace("../file", app.config.requestCtx + "/file"); - // } - // // 閫夐」瀵屾枃鏈鐞� - // if ( - // questionObj.optionStyle == "RichText" && - // (questionObj.questionType == "singleChoice" || - // questionObj.questionType == "judge" || - // questionObj.questionType == "multipleChoice") - // ) { - // questionObj.option.forEach((item) => { - // if (item.txt) - // item.txt = item.txt - // .replace(/\<img/gi, '<img class="option-rich-img"') - // .replace(/\<p/gi, '<p class="stem-rich-p"') - // .replace("../file", app.config.requestCtx + "/file"); - // }); - // } - // // 瑙f瀽瀵屾枃鏈鐞� - // if ( - // questionObj.analysisCon && - // typeof questionObj.analysisCon == "string" - // ) { - // questionObj.analysisCon = questionObj.analysisCon.replace( - // /\<img/gi, - // '<img style="max-width: 300rpx !important;object-fit: contain;" class="stem-rich-img" ' - // ); - // } - // if ( - // questionObj.stemStyle == "Image" || - // questionObj.stemStyle == "TxtAndImage" - // ) { - // questionObj.stem.stemImage = getPublicImage( - // questionObj.stem.stemImage, - // 150 - // ); - // } - // if ( - // questionObj.optionStyle == "Image" || - // questionObj.optionStyle == "TxtAndImage" - // ) { - // questionObj.option.forEach((optionItem) => { - // if (optionItem.img) - // optionItem.img = getPublicImage(optionItem.img, 150); - // }); - // } - // return cardList - // }); - }) -} + return cardList.filter(item=>item.infoList.length > 0); +}; -export default getQuestionList +const getQuestionData = async (chapter,chapterData) => { + const data = { ...chapterData }; + const oldAnswerData = localStorage.getItem('oldAnswerData') + const oldData = oldAnswerData ? JSON.parse(oldAnswerData) :{} + let oldChapterData + if(oldData) { + oldChapterData = oldData[chapter] + } + for (let key in chapterData) { + let oldList = [] + if(oldChapterData) { + oldList = oldChapterData[key] + } + data[key] = await getQuestionList(oldList,chapterData[key]); + } + return data; +}; + +export default getQuestionData; -- Gitblit v1.9.1