From cb6bb8bda31df75afe5a5bd50fe8e3ff6a3d34e2 Mon Sep 17 00:00:00 2001 From: 闫增涛 <1829501689@qq.com> Date: 星期一, 15 四月 2024 09:31:39 +0800 Subject: [PATCH] 详情页bug修改,资源购买页添加骨架屏 --- packageBookService/pages/bookServices/examination/examination.js | 372 +++++++++++++++++++++++++++++----------------------- 1 files changed, 209 insertions(+), 163 deletions(-) diff --git a/packageBookService/pages/bookServices/examination/examination.js b/packageBookService/pages/bookServices/examination/examination.js index 108f1e6..070b53f 100644 --- a/packageBookService/pages/bookServices/examination/examination.js +++ b/packageBookService/pages/bookServices/examination/examination.js @@ -1,4 +1,6 @@ -import { getPublicImage } from "../../../../assets/js/middleGround/tool"; +import { + getPublicImage +} from "../../../../assets/js/middleGround/tool"; const app = getApp(); Page({ /** @@ -28,6 +30,7 @@ total: 0, // 棰樼洰鎬绘暟 cardList: [], // 鎻愪氦椤�, questionDataList: [], // 鏄剧ず棰樼洰鍒楄〃 + noData: false, mockid: 0, uuid: 0, mockData: { @@ -44,6 +47,7 @@ sliderValue: 0, // 瀛椾綋婊戝潡 startTime: "", //杩涘叆椤甸潰褰撳墠鏃堕棿 pauseTime: 0, //鏆傚仠鏃堕棿 + }, /** @@ -178,7 +182,6 @@ // 鐩戝惉watch watch(context, variableName, callback) { let value = context.data[variableName]; // 鑾峰彇琚洃鍚睘鎬х殑褰撳墠鍊� - // 浣跨敤 Object.defineProperty 鏂规硶鍦ㄦ暟鎹璞′笂瀹氫箟灞炴�х殑 getter 鍜� setter Object.defineProperty(context.data, variableName, { configurable: true, // 鍙厤缃� @@ -193,6 +196,41 @@ }, }); }, + + // 姝e垯鎵惧嚭鍚姏src + extractSourceSrc(htmlString) { + // 姝e垯琛ㄨ揪寮忓尮閰�<source>鏍囩涓殑src灞炴�у�� + var srcRegex = /<source\s+src="([^"]+)"/i; + var srcTwo = /<audio\s+src="([^"]+)"/i; + + // 鎵ц姝e垯鍖归厤 + var match = srcRegex.exec(htmlString); + const local = srcTwo.exec(htmlString) + // 濡傛灉鍖归厤鎴愬姛锛岃繑鍥炵涓�涓崟鑾风粍鐨勫唴瀹癸紙src灞炴�х殑鍊硷級 + if (match && match[1]) { + return match[1].replace( '../file', app.config.requestCtx + '/file'); + } else if (local && local[1]) { + return local[1].replace( '../file', app.config.requestCtx + '/file') + } else { + // 濡傛灉娌℃湁鍖归厤鍒帮紝杩斿洖null + return null; + } + }, + + // 鎷垮埌鍚姏棰橀櫎audio鏍囩澶栧叾浠栧唴瀹� + removeVideoAndAudioTags(htmlString) { + // 浣跨敤姝e垯琛ㄨ揪寮忓尮閰嶅苟绉婚櫎鎵�鏈夌殑 <video> 鍜� <audio> 鏍囩 + var cleanedHtml = htmlString.replace(/<video[^>]*>[\s\S]*?<\/video>|<audio[^>]*>[\s\S]*?<\/audio>/gi, ''); + + return cleanedHtml; + }, + + // 鏀瑰彉loading鐘舵�� + changeLoadingState() { + this.setData({ + loading: true + }) + }, // 杩斿洖鎷︽埅 beforeleave() { wx.showModal({ @@ -201,8 +239,7 @@ confirmColor: "#ff6c00", cancelColor: "#949494", complete: (res) => { - if (res.cancel) { - } + if (res.cancel) {} if (res.confirm) { this.setData({ submitStatus: true, @@ -505,16 +542,14 @@ }); } app.MG.identity.setUserKey({ - setKeyRequests: [ - { - domain: "mockAnswerData", - key: this.data.uuid, - value: JSON.stringify({ - time: this.data.countdownTime, - answerData: saveData, - }), - }, - ], + setKeyRequests: [{ + domain: "mockAnswerData", + key: this.data.uuid, + value: JSON.stringify({ + time: this.data.countdownTime, + answerData: saveData, + }), + }, ], }); child.openTestReportDialog(); } @@ -633,16 +668,14 @@ // 缁勫嵎妯″紡 // 娓呯┖绛旈璁板綍 await app.MG.identity.setUserKey({ - setKeyRequests: [ - { - domain: "mockAnswerData", - key: this.data.uuid, - value: JSON.stringify({ - time: this.data.countdownTime, - answerData: [], - }), - }, - ], + setKeyRequests: [{ + domain: "mockAnswerData", + key: this.data.uuid, + value: JSON.stringify({ + time: this.data.countdownTime, + answerData: [], + }), + }, ], }); this.init(); } else { @@ -693,7 +726,6 @@ this.setData({ currentIndex: value.currentIndex, }); - console.log(this.data.submitStatus); // 鎼哄甫绛旈璁板綍 鑾峰彇棰樼洰 await this.getQuestionList(value.dataList); } else { @@ -722,6 +754,7 @@ async getQuestionList(oldData) { // 娓呯┖姝g‘棰樻暟璁板綍 this.setData({ + noData: false, cardList: [], correctNum: 0, }); @@ -761,6 +794,9 @@ }, }; await app.MG.store.getProductDetail(query).then((res) => { + if (!res.datas.cmsDatas[0].datas.length) return this.setData({ + noData: true + }) this.setData({ total: res.datas.cmsDatas[0].datas.length, }); @@ -783,34 +819,26 @@ // 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), // 棰樺共 + 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) - : "", // 閫夋嫨棰橀�夐」 + 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" - ? [] - : "", + 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: - this.data.collectList.indexOf(item.id) > -1 ? true : false, + isCollect: this.data.collectList.indexOf(item.id) > -1 ? true : false, isUnfold: "", // 鎺у埗瑙f瀽鐨勬姌鍙犻潰鏉挎槸鍚﹀睍寮� }; // 澶氶�夊拰濉┖绛旀鑲负鏁扮粍锛岃杞崲JSON鏍煎紡 @@ -859,8 +887,8 @@ 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(/\<img/gi, '<img class="option-rich-img"') + .replace(/\<p/gi, '<p class="stem-rich-p"'); }); } // 瑙f瀽瀵屾枃鏈鐞� @@ -872,6 +900,14 @@ /\<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 ( @@ -1047,13 +1083,11 @@ // 璁板綍閿欓 app.MG.identity .setUserKey({ - setKeyRequests: [ - { - domain: "errorData", - key: this.data.rootCmsItemId, - value: JSON.stringify(this.data.errorList), - }, - ], + setKeyRequests: [{ + domain: "errorData", + key: this.data.rootCmsItemId, + value: JSON.stringify(this.data.errorList), + }, ], }) .then((res) => { console.log(res); @@ -1111,13 +1145,11 @@ } app.MG.identity .setUserKey({ - setKeyRequests: [ - { - domain: "collectData", - key: this.data.rootCmsItemId, - value: JSON.stringify(this.data.collectList), - }, - ], + setKeyRequests: [{ + domain: "collectData", + key: this.data.rootCmsItemId, + value: JSON.stringify(this.data.collectList), + }, ], }) .then((res) => {}); }, @@ -1156,17 +1188,15 @@ setAnswerInfo(data) { app.MG.identity .setUserKey({ - setKeyRequests: [ - { - domain: "answerData", - key: this.data.productLinkPath, - value: JSON.stringify(data), - }, - ], + setKeyRequests: [{ + domain: "answerData", + key: this.data.productLinkPath, + value: JSON.stringify(data), + }, ], }) .then((res) => {}); }, - // 鑾峰彇绛旈鏁版嵁 + // 鑾峰彇鏃х瓟棰樻暟鎹� getAnswerInfo(callback) { app.MG.identity .getUserKey({ @@ -1177,7 +1207,7 @@ if (callback) callback(res); }); }, - // 鍒犻櫎绛旈鏁版嵁 + // 鍒犻櫎鏃х瓟棰樻暟鎹� delAnswerInfo(callback) { app.MG.identity .delUserKey({ @@ -1206,6 +1236,7 @@ } else { this.setData({ loading: false, + noData: true }); wx.showModal({ title: "鎻愮ず", @@ -1230,8 +1261,7 @@ async getCollectDataList() { let questionArr = []; this.setData({ - cardList: [ - { + cardList: [{ catalogName: "鍗曢�夐", infoList: [], }, @@ -1285,28 +1315,21 @@ 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), // 棰樺共 + 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) - : "", // 閫夋嫨棰橀�夐」 + 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: - item.Embedded_QuestionBank_QuestionType == "completion" || - item.Embedded_QuestionBank_QuestionType == "multipleChoice" - ? [] - : "", + difficulty: item.Embedded_QuestionBank_Difficulty ? + 4 - item.Embedded_QuestionBank_Difficulty : 0, // 闅惧害绛夌骇 + userAnswer: item.Embedded_QuestionBank_QuestionType == "completion" || + item.Embedded_QuestionBank_QuestionType == "multipleChoice" ? [] : "", isSubmit: false, // 鏌ョ湅瑙f瀽 isRight: null, // 鏄惁姝g‘ isComplete: false, @@ -1377,9 +1400,27 @@ 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(/\<img/gi, '<img class="option-rich-img"') + .replace(/\<p/gi, '<p class="stem-rich-p"'); }); + } + // 瑙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 = "鍒ゆ柇棰�"; @@ -1443,7 +1484,8 @@ this.getErrorDataList(); } else { this.setData({ - loading: true, + loading: false, + noData: true }); wx.showModal({ title: "鎻愮ず", @@ -1467,8 +1509,7 @@ // 鑾峰彇閿欓闆� async getErrorDataList() { this.setData({ - cardList: [ - { + cardList: [{ catalogName: "鍗曢�夐", infoList: [], }, @@ -1520,28 +1561,21 @@ 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), // 棰樺共 + 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) - : "", // 閫夋嫨棰橀�夐」 + 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: - item.Embedded_QuestionBank_QuestionType == "completion" || - item.Embedded_QuestionBank_QuestionType == "multipleChoice" - ? [] - : "", + difficulty: item.Embedded_QuestionBank_Difficulty ? + 4 - item.Embedded_QuestionBank_Difficulty : 0, // 闅惧害绛夌骇 + userAnswer: item.Embedded_QuestionBank_QuestionType == "completion" || + item.Embedded_QuestionBank_QuestionType == "multipleChoice" ? [] : "", isSubmit: false, // 鏌ョ湅瑙f瀽 isRight: null, // 鏄惁姝g‘ isComplete: false, @@ -1614,9 +1648,28 @@ 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(/\<img/gi, '<img class="option-rich-img"') + .replace(/\<p/gi, '<p class="stem-rich-p"'); }); + } + // 瑙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) + console.log('棰樺共', questionObj.stem.stemTxt); + } } if (item.Embedded_QuestionBank_QuestionType == "judge") { questionObj.type = "鍒ゆ柇棰�"; @@ -1798,35 +1851,27 @@ id: item.id, score: pathitem.infoList.find((infoItem) => infoItem.id == item.id) .score, - stem: - item.Embedded_QuestionBank_QuestionType == "completion" - ? JSON.parse(item.Embedded_QuestionBank_Stem) - .stemTxt.replaceAll("<vacancy>", ",input,") - .split(",") - : JSON.parse(item.Embedded_QuestionBank_Stem), // 棰樺共 + 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) - : "", // 閫夋嫨棰橀�夐」 + 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.answer - : item.Embedded_QuestionBank_QuestionType == "completion" || - item.Embedded_QuestionBank_QuestionType == "multipleChoice" - ? [] - : "", - isUserAnswer: oldObj ? this.isHaveAnswer(oldObj.userAnswer) : false, + difficulty: item.Embedded_QuestionBank_Difficulty ? + 4 - item.Embedded_QuestionBank_Difficulty : 0, // 闅惧害绛夌骇 + userAnswer: oldObj ? + oldObj.answer : item.Embedded_QuestionBank_QuestionType == "completion" || + item.Embedded_QuestionBank_QuestionType == "multipleChoice" ? [] : "", + isUserAnswer: oldObj ? this.isHaveAnswer(oldObj.answer) : false, isRight: oldObj ? oldObj.isRight : null, // isComplete: oldObj ? oldObj.isComplete : false, isComplete: this.data.mockData.state == "3" ? true : false, - isCollect: - this.data.collectList.indexOf(item.id) > -1 ? true : false, + isCollect: this.data.collectList.indexOf(item.id) > -1 ? true : false, isUnfold: "", // 鎺у埗瑙f瀽鐨勬姌鍙犻潰鏉挎槸鍚﹀睍寮� }; // 澶氶�夊拰濉┖绛旀鑲负鏁扮粍锛岃杞崲JSON鏍煎紡 @@ -1877,6 +1922,14 @@ '<img class="option-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 ( @@ -1957,26 +2010,22 @@ // 璁板綍璐拱缁勫嵎鏃堕棿 setMockInfo(data) { app.MG.identity.setUserKey({ - setKeyRequests: [ - { - domain: "mockData", - key: this.data.bookId + "", - value: JSON.stringify(data), - }, - ], + setKeyRequests: [{ + domain: "mockData", + key: this.data.bookId + "", + value: JSON.stringify(data), + }, ], }); }, // 璁板綍缁勫嵎棰樼洰鍒楄〃 saveMockQuestionList(data) { app.MG.identity .setUserKey({ - setKeyRequests: [ - { - domain: "mockQuestionData", - key: this.data.uuid, - value: JSON.stringify(data), - }, - ], + setKeyRequests: [{ + domain: "mockQuestionData", + key: this.data.uuid, + value: JSON.stringify(data), + }, ], }) .then((res) => { console.log("妯¤�冮鐩垪琛ㄥ凡璁板綍"); @@ -2008,9 +2057,8 @@ this.setData({ currentIndex: JSON.parse(res[0].value).currentIndex, "mockData.time": JSON.parse(res[0].value).time, - countdownTime: JSON.parse(res[0].value).time - ? JSON.parse(res[0].value).time - : this.data.mockData.sumTime, + countdownTime: JSON.parse(res[0].value).time ? + JSON.parse(res[0].value).time : this.data.mockData.sumTime, "mockData.answer": JSON.parse(res[0].value).answerData, }); console.log(JSON.parse(res[0].value)); @@ -2054,17 +2102,15 @@ // app.MG.identity .setUserKey({ - setKeyRequests: [ - { - domain: "mockAnswerData", - key: this.data.uuid, - value: JSON.stringify({ - currentIndex: this.data.currentIndex, - time: this.data.countdownTime, - answerData: saveData, - }), - }, - ], + setKeyRequests: [{ + domain: "mockAnswerData", + key: this.data.uuid, + value: JSON.stringify({ + currentIndex: this.data.currentIndex, + time: this.data.countdownTime, + answerData: saveData, + }), + }, ], }) .then((res) => { this.setData({ @@ -2110,4 +2156,4 @@ ); return newContent; }, -}); +}); \ No newline at end of file -- Gitblit v1.9.1