From f0229b7c6801f6429dec75e208192b61053b8c7d Mon Sep 17 00:00:00 2001
From: yiming <m13691596795@163.com>
Date: 星期三, 03 四月 2024 09:46:02 +0800
Subject: [PATCH] 书目

---
 packageBookService/pages/bookServices/examination/examination.js |  348 +++++++++++++++++++++++++++++++--------------------------
 1 files changed, 188 insertions(+), 160 deletions(-)

diff --git a/packageBookService/pages/bookServices/examination/examination.js b/packageBookService/pages/bookServices/examination/examination.js
index c90f3bc..1baf9aa 100644
--- a/packageBookService/pages/bookServices/examination/examination.js
+++ b/packageBookService/pages/bookServices/examination/examination.js
@@ -45,6 +45,8 @@
     saveTime: 20,
     isNight: false,
     sliderValue: 0, // 瀛椾綋婊戝潡
+    startTime: "", //杩涘叆椤甸潰褰撳墠鏃堕棿
+    pauseTime: 0 //鏆傚仠鏃堕棿 
   },
 
   /**
@@ -110,6 +112,9 @@
         }
       }, 1000)
     }
+    this.setData({
+      startTime: Date.now()
+    })
   },
 
   /**
@@ -118,6 +123,13 @@
   onHide() {
     if (wx.timer) {
       clearInterval(wx.timer)
+    }
+    this.setData({
+      pauseTime: Date.now()
+    })
+    if (wx.getStorageSync(app.config.tokenKey)) {
+      let duration = this.data.pauseTime - this.data.startTime
+      this.count(duration)
     }
   },
 
@@ -131,6 +143,32 @@
     if (this.data.countdownInterval !== null) {
       clearInterval(this.data.countdownInterval)
     }
+    this.setData({
+      pauseTime: Date.now()
+    })
+    if (wx.getStorageSync(app.config.tokenKey)) {
+      let duration = this.data.pauseTime - this.data.startTime
+      this.count(duration)
+    }
+  },
+
+  count(timeStr) {
+    const data = {
+      appRefCode: app.config.appRefCode,
+      type: 'LearningTime', //缁熻绫诲瀷--闃呰鏃堕暱
+      data: timeStr + '', //缁熻鍐呭--鏃堕暱姣
+      event: 'LearningTime',
+      sysType: 'App'
+    }
+    //闃呰鍟嗗搧鐨刬d
+    if (this.data.bookId) {
+      data.productId = this.data.bookId
+    }
+    //闃呰璧勬簮鐨刬d
+    // if (product.cmsItemId) {
+    //   data.cmsItemId = product.cmsItemId
+    // }
+    app.MG.job.newJobWithApiNewEvent(data).then((res) => {})
   },
 
   /**
@@ -257,7 +295,9 @@
   viewParsing() {
     if (this.data.answerType == 'collectQuestion' || this.data.answerType == 'errorQuestion') {
       const item = this.data.questionDataList[this.data.currentIndex]
-      if (!item.isComplete) this.handleQuestion(this.data.currentIndex)
+      if (!item.isComplete) {
+        this.handleQuestion(this.data.currentIndex)
+      }
     }
   },
   // 鐐瑰嚮绛旈鍗¤烦杞鐩�
@@ -730,13 +770,11 @@
             questionObj.questionType == 'multipleChoice'
           ) {
             try {
-              questionObj.answer = JSON.parse(questionObj.answer)
+              questionObj.answer = JSON.parse(questionObj.answer).toString()
             } catch (error) {
               questionObj.answer = item.Embedded_QuestionBank_Answer
             }
           }
-          // questionObj.userAnswer = this.arrayToString(questionObj.userAnswer)
-          // questionObj.isHaveAnswer = this.isHaveAnswer(questionObj.userAnswer)
           // 濉┖棰樻敼閫�
           if (questionObj.questionType == 'completion') {
             let index = 0
@@ -756,13 +794,16 @@
           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"')
-
           }
           // 閫夐」瀵屾枃鏈鐞�
           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"')
             })
+          }
+          // 瑙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') {
@@ -773,13 +814,17 @@
               if (optionItem.img) optionItem.img = getPublicImage(optionItem.img, 150)
             })
           }
+          // 瀹㈣棰樻�诲垎璧嬪��
+          if (questionObj.questionType !== 'shortAnswer') {
+            this.setData({
+              subjectiveGrade: this.data.subjectiveGrade + 2
+            })
+          }
           // if (questionObj.optionStyle == 'RichText') {
           //   questionObj.option.forEach(optionItem => {
           //     optionItem.txt.replace(/<img>/g, "<img class='imgClass'>")
           //   })
           // }
-          // 鏃ф暟鎹噷 棰樼洰宸茬粡浣滅瓟锛屼慨鏀瑰凡绛旈鐩暟閲�
-          // if (oldObj && oldObj.userAnswer.length > 0) countDownRef.value.changeAlready()
           // 鏃ф暟鎹噷 棰樼洰姝g‘ 璁板綍姝g‘鏁伴噺
           if (questionObj.isRight) {
             this.setData({
@@ -792,7 +837,6 @@
                 subjectiveTotal: this.data.subjectiveTotal + 1
               })
             }
-
           }
           // cardList璧嬪��
           let cardIndex = this.data.cardList.findIndex((item) => item.path == pathitem.productLinkPath)
@@ -801,11 +845,9 @@
           this.setData({
             [`cardList[${cardIndex}].infoList`]: infoList
           })
-          //   this.data.cardList[this.data.cardList.findIndex((item) => item.path == pathitem.productLinkPath)]
-          //     .infoList
-          // infoList.push(questionObj)
           flag++;
           let questionList = []
+          let grade = 0
           const cardUpdatedList = this.data.cardList
           // if (flag == this.data.idPathList.length) {
           cardUpdatedList.forEach(aitem => {
@@ -840,7 +882,6 @@
     // 鎵规敼棰樼洰
     if (item.questionType == 'multipleChoice') {
       // 澶氶�夐
-      // subjectiveGrade.value += item.score
       if (item.answer.length == item.userAnswer.length) {
         const sortedArr1 = item.answer.slice().sort()
         const sortedArr2 = item.userAnswer.slice().sort()
@@ -852,7 +893,6 @@
       }
     } else if (item.questionType == 'singleChoice' || item.questionType == 'judge') {
       // 鍗曢�� 鍒ゆ柇
-      // subjectiveGrade.value += item.score
       questionList[index].isRight = item.answer == item.userAnswer
     } else if (item.questionType == 'shortAnswer') {
       // 绠�绛� 缈昏瘧
@@ -869,7 +909,6 @@
           )
         }
       }
-      // subjectiveGrade.value += item.score
       if (typeof item.answer == 'string') {
         questionList[index].isRight = item.answer == item.userAnswer[0]
       } else {
@@ -885,7 +924,6 @@
     if (item.questionType != 'shortAnswer') {
       this.setData({
         subjectiveTotal: this.data.subjectiveTotal + 1,
-        subjectiveGrade: this.data.subjectiveGrade + item.score
       })
     }
     if (questionList[index].isRight && item.questionType != 'shortAnswer') {
@@ -1058,7 +1096,6 @@
           this.setData({
             collectList: JSON.parse(res[0].value)
           })
-          // total.value = collectList.value.length
         } catch (error) {}
         if (this.data.collectList && this.data.collectList.length) {
           await this.getCollectDataList()
@@ -1087,12 +1124,6 @@
   // 鑾峰彇鏀惰棌澶�
   async getCollectDataList() {
     let questionArr = []
-    // this.setData({
-    //   cardList: [{
-    //     catalogName: '鏀惰棌澶�',
-    //     infoList: []
-    //   }]
-    // })
     this.setData({
       cardList: [{
         catalogName: '鍗曢�夐',
@@ -1116,142 +1147,139 @@
     let shortArr = [] // 绠�绛�
     let multipleChoiceArr = [] // 澶氶��
     let completionArr = [] // 濉┖
-    let query = {
-      path: '*',
-      cmsPath: this.data.rootCmsItemId,
-      cmsType: '*',
-      productId: this.data.bookId,
-      queryType: '*',
-      itemIds: this.data.collectList.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: []
+    for (let qindex = 0; qindex < this.data.collectList.length; qindex++) {
+      const qitem = this.data.collectList[qindex];
+      let query = {
+        path: '*',
+        cmsPath: this.data.rootCmsItemId,
+        cmsType: '*',
+        productId: this.data.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: []
+        }
       }
-    }
-    app.MG.store.getProductDetail(query).then((res) => {
-      let questionArr = []
-      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('<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: item.Embedded_QuestionBank_QuestionType == 'completion' ||
-            item.Embedded_QuestionBank_QuestionType == 'multipleChoice' ? [] : '',
-          isSubmit: false, // 鏌ョ湅瑙f瀽
-          isRight: null, // 鏄惁姝g‘
-          isComplete: false,
-          isCollect: true
-        }
-        // 澶氶�夊拰濉┖绛旀鑲负鏁扮粍锛岃杞崲JSON鏍煎紡
-        if (
-          questionObj.questionType == 'completion' ||
-          questionObj.questionType == 'multipleChoice'
-        ) {
-          try {
-            questionObj.answer = JSON.parse(questionObj.answer)
-          } catch (error) {
-            //
+      await app.MG.store.getProductDetail(query).then((res) => {
+        let questionArr = []
+        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('<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: item.Embedded_QuestionBank_QuestionType == 'completion' ||
+              item.Embedded_QuestionBank_QuestionType == 'multipleChoice' ? [] : '',
+            isSubmit: false, // 鏌ョ湅瑙f瀽
+            isRight: null, // 鏄惁姝g‘
+            isComplete: false,
+            isCollect: true
           }
-        }
-        // 濉┖棰樻敼閫�
-        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++
+          // 澶氶�夊拰濉┖绛旀鑲负鏁扮粍锛岃杞崲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.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"')
+          // 濉┖棰樻敼閫�
+          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"')
 
-        }
-        // 閫夐」瀵屾枃鏈鐞�
-        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"')
-          })
-        }
-        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)
-        }
-        // questionArr.push(questionObj)
+          }
+          // 閫夐」瀵屾枃鏈鐞�
+          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"')
+            })
+          }
+          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)
+          }
+        })
       })
-      // this.setData({
-      //   questionDataList: questionArr,
-      //   ['cardList[0].infoList']: questionArr,
-      //   loading: false,
-      // })
-      this.setData({
-        ['cardList[0].infoList']: singleChoiceArr,
-        ['cardList[1].infoList']: judgeArr,
-        ['cardList[2].infoList']: multipleChoiceArr,
-        ['cardList[3].infoList']: completionArr,
-        ['cardList[3].infoList']: shortArr,
-      })
-      const cardList = this.data.cardList
-      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
-          questionArr.push(citem)
-        }
+    }
+    this.setData({
+      ['cardList[0].infoList']: singleChoiceArr,
+      ['cardList[1].infoList']: judgeArr,
+      ['cardList[2].infoList']: multipleChoiceArr,
+      ['cardList[3].infoList']: completionArr,
+      ['cardList[3].infoList']: shortArr,
+    })
+    const cardList = this.data.cardList
+    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
+        questionArr.push(citem)
       }
-      this.setData({
-        questionDataList: questionArr,
-        cardList: cardList,
-        loading: false
-      })
+    }
+    this.setData({
+      questionDataList: questionArr,
+      cardList: cardList,
+      loading: false
     })
   },
   // 鎴戠殑閿欓妯″紡涓嬭幏鍙栭敊棰榠d鍒楄〃
@@ -1292,12 +1320,6 @@
   },
   // 鑾峰彇閿欓闆�
   async getErrorDataList() {
-    // this.setData({
-    //   cardList: [{
-    //     catalogName: '閿欓闆�',
-    //     infoList: []
-    //   }]
-    // })
     this.setData({
       cardList: [{
         catalogName: '鍗曢�夐',
@@ -1372,9 +1394,9 @@
           questionObj.questionType == 'multipleChoice'
         ) {
           try {
-            questionObj.answer = JSON.parse(questionObj.answer)
+            questionObj.answer = JSON.parse(questionObj.answer).toString()
           } catch (error) {
-            //
+            questionObj.answer = item.Embedded_QuestionBank_Answer
           }
         }
         // 濉┖棰樻敼閫�
@@ -1616,7 +1638,7 @@
             questionObj.questionType == 'multipleChoice'
           ) {
             try {
-              questionObj.answer = JSON.parse(questionObj.answer)
+              questionObj.answer = JSON.parse(questionObj.answer).toString()
             } catch (error) {
               questionObj.answer = item.Embedded_QuestionBank_Answer
             }
@@ -1656,6 +1678,12 @@
               if (optionItem.img) optionItem.img = getPublicImage(optionItem.img, 150)
             })
           }
+          // 瀹㈣棰樻�诲垎璧嬪��
+          if (questionObj.questionType !== 'shortAnswer') {
+            this.setData({
+              subjectiveGrade: this.data.subjectiveGrade + questionObj.score
+            })
+          }
           if (oldObj && oldObj.isRight) {
             this.setData({
               correctNum: this.data.correctNum + 1

--
Gitblit v1.9.1