import { activeBook } from "@/assets/js/config"; import MG from "@/assets/js/middleGround/WebMiddleGroundApi"; import getPublicImage from "@/assets/js/middleGround/tool"; const getQuestionList = (questionList) => { let cardList = [ { catalogName: "单选题", infoList: [], }, { catalogName: "判断题", infoList: [], }, { catalogName: "多选题", infoList: [], }, { catalogName: "填空题", infoList: [], }, { catalogName: "简答题", infoList: [], }, ]; 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: [], }, }; MG.store.getProductDetail(query).then((res) => { res.datas.cmsDatas[0].datas.forEach((item, index) => { const questionObj = { number: index + 1, // 题号 id: item.id, stem: item.Embedded_QuestionBank_QuestionType == "completion" ? JSON.parse(item.Embedded_QuestionBank_Stem) .stemTxt.replaceAll("", ",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, // 解析 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: item.Embedded_QuestionBank_QuestionType == "completion" || item.Embedded_QuestionBank_QuestionType == "multipleChoice" ? [] : "", isSubmit: false, // 查看解析 isRight: null, // 是否正确 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( /\ { if (item.txt) item.txt = item.txt .replace(/\ { const data = { ...chapterData }; for (let key in chapterData) { data[key] = getQuestionList(chapterData[key]); } return data; }; export default getQuestionData;