From 6df96b3e7a7da1985ee875e84711e9f15c5fbff0 Mon Sep 17 00:00:00 2001
From: litian <C21AF165>
Date: 星期二, 24 十二月 2024 18:25:02 +0800
Subject: [PATCH] Merge refs/remotes/origin/master into refs/heads/master

---
 packageBookService/pages/bookServices/examination/examination.js |  455 ++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 403 insertions(+), 52 deletions(-)

diff --git a/packageBookService/pages/bookServices/examination/examination.js b/packageBookService/pages/bookServices/examination/examination.js
index ceac28b..320d1a5 100644
--- a/packageBookService/pages/bookServices/examination/examination.js
+++ b/packageBookService/pages/bookServices/examination/examination.js
@@ -1,6 +1,9 @@
 import {
   getPublicImage
 } from "../../../../assets/js/middleGround/tool";
+import {
+  loginInfo
+} from '../../../../assets/js/login';
 const app = getApp();
 Page({
   /**
@@ -14,6 +17,8 @@
     countdownInterval: null, // 璁℃椂鍣�
     isCountdownRunning: true, // 鏄惁鍊掕鏃�
     countdownTime: 0, // 鍊掕鏃舵椂闂�
+    storeInfo: '',
+    jslx: '',
     bookId: "",
     productLinkPath: "",
     rootCmsItemId: "",
@@ -47,7 +52,12 @@
     sliderValue: 0, // 瀛椾綋婊戝潡
     startTime: "", //杩涘叆椤甸潰褰撳墠鏃堕棿
     pauseTime: 0, //鏆傚仠鏃堕棿
-    showDialog: false // 鏈彁浜ら��鍑烘嫤鎴脊绐�
+    showDialog: false, // 鏈彁浜ら��鍑烘嫤鎴脊绐�
+    showId: '',
+    isShowDialog: false, // 娴嬭瘯鎶ュ憡寮圭獥鏄惁鏄剧ず
+    joinGroup: false, // 鏄惁鍔犲叆鐝骇
+    visible: false, // 鍔犲叆鐝骇寮圭獥鏄惁鎵撳紑
+    classList: [] // 鐝骇鍒楄〃
   },
 
   /**
@@ -67,17 +77,31 @@
       rootCmsItemId: options.rootCmsItemId,
       idPathList: options.idPathList ? JSON.parse(options.idPathList) : [],
       answerType: options.answerType,
+      storeInfo: options.storeInfo,
+      jslx: options.jslx,
     });
-    // wx.setNavigationBarTitle({
-    //   title: options.answerTitle,
-    // })
+    wx.setNavigationBarTitle({
+      title: options.answerTitle,
+    })
     if (this.data.answerType == "mock") {
       this.setData({
         uuid: options.uuid,
         mockid: options.mockid,
       });
     }
-    this.init();
+
+    const token = wx.getStorageSync(app.config.tokenKey)
+    if (!token) {
+      loginInfo(app, (data) => {
+        if (data) {
+          this.init();
+        } else {
+          this.init();
+        }
+      })
+    } else {
+      this.init()
+    }
   },
 
   /**
@@ -180,6 +204,7 @@
    * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜�
    */
   onShareAppMessage() {},
+  onShareTimeline() {},
 
   // 鐩戝惉watch
   watch(context, variableName, callback) {
@@ -198,7 +223,20 @@
       },
     });
   },
-
+  // 淇敼nav棰滆壊
+  changeNavBarColor(e) {
+    if (type == 'night') {
+      wx.setNavigationBarColor({
+        backgroundColor: '#000000',
+        frontColor: '#ffffff',
+      })
+    } else {
+      wx.setNavigationBarColor({
+        backgroundColor: '#ffffff',
+        frontColor: '#000000',
+      })
+    }
+  },
   // 姝e垯鎵惧嚭鍚姏src
   extractSourceSrc(htmlString) {
     // 姝e垯琛ㄨ揪寮忓尮閰�<source>鏍囩涓殑src灞炴�у��  
@@ -235,43 +273,55 @@
   },
   // 杩斿洖鎷︽埅
   beforeleave() {
-    wx.showModal({
-      title: "鎻愮ず",
-      content: "鏈彁浜わ紝鏄惁閫�鍑虹瓟棰�",
-      confirmColor: "#ff6c00",
-      cancelColor: "#949494",
-      complete: (res) => {
-        if (res.cancel) {
-          this.setData({
-            showDialog: true
-          })
-        }
-        if (res.confirm) {
-          this.setData({
-            submitStatus: true,
-            showDialog: false
-          });
-          wx.navigateBack();
-        }
-      },
-    });
+    if ((this.data.answerType == 'option' || this.data.answerType == 'mock') && !this.data.submitStatus) {
+      wx.showModal({
+        title: "鎻愮ず",
+        content: "鏈彁浜わ紝鏄惁閫�鍑虹瓟棰�",
+        confirmColor: "#ff6c00",
+        cancelColor: "#949494",
+        complete: (res) => {
+          if (res.cancel) {
+            this.setData({
+              showDialog: true
+            })
+          }
+          if (res.confirm) {
+            this.setData({
+              submitStatus: true,
+              showDialog: false
+            });
+            wx.navigateBack();
+          }
+        },
+      });
+    }
   },
   onChangeSlider(e) {
     this.setData({
       sliderValue: e.detail.value,
     });
-    console.log(e.detail.value);
   },
   // 杩斿洖
   goBack() {
-    console.log(this.data.submitStatus);
     wx.navigateBack();
   },
   //璁剧疆鑳屾櫙鑹�
   changeBGColor(e) {
+    const flag = e.detail.value
     this.setData({
-      isNight: e.detail.value,
+      isNight: flag,
     });
+    if (flag) {
+      wx.setNavigationBarColor({
+        backgroundColor: '#000000',
+        frontColor: '#ffffff',
+      })
+    } else {
+      wx.setNavigationBarColor({
+        backgroundColor: '#ffffff',
+        frontColor: '#000000',
+      })
+    }
   },
   // 鑾峰彇淇濆瓨鐨勫�掕鏃舵椂闂�
   getSavedTime() {
@@ -329,11 +379,13 @@
   },
   // 鍒囨崲棰樼洰
   changeSwiper(e) {
-    this.setData({
-      currentIndex: e.detail.index,
-    });
     let index = e.detail.index - 1 >= 0 ? e.detail.index - 1 : 0;
     const item = this.data.questionDataList[index];
+    const lastItem = this.data.questionDataList[index + 1];
+    this.setData({
+      currentIndex: e.detail.index,
+      showId: lastItem.id
+    });
     if (
       (this.data.answerType == "collectQuestion" ||
         this.data.answerType == "errorQuestion") &&
@@ -432,7 +484,6 @@
     const inputData = e.detail.value.detail.value;
     const id = e.detail.value.currentTarget.dataset.id;
     const index = Number(e.detail.value.currentTarget.dataset.index);
-    console.log(index);
     const questionList = this.data.questionDataList;
     questionList.forEach((item) => {
       if (item.id == id) {
@@ -496,15 +547,16 @@
   // 鎻愪氦閫昏緫
   submitPaper() {
     this.setData({
-      showDialog: false,
       submitStatus: true,
       loading: true,
     });
-    const child = this.selectComponent("#question-options");
+    const child = this.selectComponent('#question-options');
+
     if (
       this.data.answerType == "option" ||
       this.data.answerType == "errorQuestion" ||
-      this.data.answerType == "mock"
+      this.data.answerType == "mock" ||
+      this.data.answerType == 'interaction'
     ) {
       // 鍏堥亶鍘嗘墍鏈夐鐩紝灏嗘湭鎵规敼鐨勯鐩壒鏀�
       const qustionList = this.data.questionDataList;
@@ -516,7 +568,11 @@
     if (this.data.answerType == "option") {
       this.toggleCountdown();
       this.recordAnswerData();
-      child.openTestReportDialog();
+      // this.selectComponent 鎷夸笉鍒� 缁勪欢浜嗭紝 鏀逛负鐩戝惉缁勪欢浼犲�� 鎵撳紑寮圭獥
+      // child.openTestReportDialog();
+      this.setData({
+        isShowDialog: true
+      })
     } else if (
       this.data.answerType == "collectQuestion" ||
       this.data.answerType == "errorQuestion"
@@ -559,10 +615,17 @@
           }),
         }, ],
       });
-      child.openTestReportDialog();
+      // child.openTestReportDialog();
+      this.setData({
+        isShowDialog: true
+      })
+    } else if (this.data.answerType == 'interaction') {
+      this.toggleCountdown();
+      this.handleClassQuestion()
     }
     this.setData({
       loading: false,
+      showDialog: false,
     });
   },
   // 鍒濆鍖栧嚱鏁�
@@ -581,6 +644,13 @@
       // 娴嬭瘯绛旈
       await this.getCollectIdList(); // 鑾峰彇鏀惰棌id鍒楄〃
       await this.getErrorList(); // 鑾峰彇閿欓id鍒楄〃
+    } else if (this.data.answerType == "interaction") {
+      this.setData({
+        countdownTime: 2 * 60 * 60 * 1000,
+      });
+      this.getCurrentClassList()
+      this.getinteractionInfo()
+      // 鏁欏浜掑姩
     } else if (this.data.answerType == "collectQuestion") {
       this.setData({
         submitStatus: true,
@@ -662,6 +732,7 @@
       subjectiveNum: 0,
       currentIndex: 0,
       submitStatus: false,
+      showDialog: true
     });
     if (this.data.answerType == "option") {
       this.setData({
@@ -688,6 +759,14 @@
         }, ],
       });
       this.init();
+    } else if (this.data.answerType == 'interaction') {
+      this.setData({
+        countdownTime: 2 * 60 * 60 * 1000,
+      });
+      this.delinteractionInfo(() => {
+        this.getQuestionList()
+        this.clearTime();
+      })
     } else {
       this.init();
       this.clearTime();
@@ -806,6 +885,9 @@
           size: 999,
         },
       };
+      if (this.data.storeInfo) {
+        query.storeInfo = this.data.storeInfo
+      }
       await app.MG.store.getProductDetail(query).then((res) => {
         this.setData({
           total: res.datas.cmsDatas[0].datas.length,
@@ -817,11 +899,21 @@
           oldList = oldData.find(
             (item) => item.path == pathitem.productLinkPath
           ).infoList;
-          this.setData({
-            submitStatus: true,
-          });
         }
         res.datas.cmsDatas[0].datas.forEach((item, index) => {
+          if (this.data.storeInfo || this.data.jslx) {
+            if (item.Embedded_QuestionBank_QuestionType == 'singleChoice') {
+              pathitem.name = "鍗曢�夐"
+            } else if (item.Embedded_QuestionBank_QuestionType == 'shortAnswer') {
+              pathitem.name = "绠�绛旈"
+            } else if (item.Embedded_QuestionBank_QuestionType == "completion") {
+              pathitem.name = "濉┖棰�";
+            } else if (item.Embedded_QuestionBank_QuestionType == "multipleChoice") {
+              pathitem.name = "澶氶�夐";
+            } else if (item.Embedded_QuestionBank_QuestionType == "judge") {
+              pathitem.name = "鍒ゆ柇棰�";
+            }
+          }
           let oldObj = "";
           if (oldList)
             oldObj = oldList.find((oldItem) => oldItem.id == item.id);
@@ -857,7 +949,8 @@
             questionObj.questionType == "multipleChoice"
           ) {
             try {
-              questionObj.answer = JSON.parse(questionObj.answer).toString();
+              // questionObj.answer = JSON.parse(questionObj.answer).toString();
+              questionObj.answer = JSON.parse(questionObj.answer)
             } catch (error) {
               questionObj.answer = item.Embedded_QuestionBank_Answer;
             }
@@ -998,16 +1091,17 @@
     }
     // 鏈夐鐩啀寮�濮嬪�掕鏃�
     if (this.data.questionDataList.length) {
-      console.log(this.data.questionDataList);
       this.startCountdown();
+      this.setData({
+        loading: false,
+        showId: this.data.questionDataList[0].id
+      })
     } else {
       this.setData({
-        noData: true
+        noData: true,
+        loading: false,
       })
     }
-    this.setData({
-      loading: false,
-    });
   },
   // 鎵规敼棰樼洰 锛堢粌涔狅紝鎴戠殑閿欓锛屾垜鐨勬敹钘�,锛岀粍鍗凤級
   handleQuestion(index) {
@@ -1040,7 +1134,7 @@
       // 绠�绛� 缈昏瘧
       questionList[index].isRight = null;
     } else if (item.questionType == "completion") {
-      if (item.answer == "string") {
+      if (typeof item.answer == "string") {
         item.isRight = item.answer == item.userAnswer[0];
       } else {
         if (item.answer.length != item.userAnswer.length) {
@@ -1198,7 +1292,6 @@
         }
       }
     }
-
     this.setAnswerInfo(setInfoData);
   },
   // 鎻愪氦绛旈鏁版嵁
@@ -1326,6 +1419,9 @@
           Embedded_QuestionBank_Difficulty: [],
         },
       };
+      if (this.data.storeInfo) {
+        query.storeInfo = this.data.storeInfo
+      }
       await app.MG.store.getProductDetail(query).then((res) => {
         let questionArr = [];
         res.datas.cmsDatas[0].datas.forEach((item, index) => {
@@ -1357,6 +1453,7 @@
             questionObj.questionType == "completion" ||
             questionObj.questionType == "multipleChoice"
           ) {
+            console.log(questionObj.answer, "111")
             try {
               questionObj.answer = JSON.parse(questionObj.answer).toString();
             } catch (error) {
@@ -1480,6 +1577,7 @@
     }
     this.setData({
       questionDataList: questionArr,
+      showId: questionArr[0].id,
       cardList: cardList,
       loading: false,
     });
@@ -1572,6 +1670,9 @@
         Embedded_QuestionBank_Difficulty: [],
       },
     };
+    if (this.data.storeInfo) {
+      query.storeInfo = this.data.storeInfo
+    }
     await app.MG.store.getProductDetail(query).then((res) => {
       let questionArr = [];
       res.datas.cmsDatas[0].datas.forEach((item, index) => {
@@ -1728,11 +1829,12 @@
       }
       this.setData({
         questionDataList: questionArr,
+        showId: questionArr[0].id,
         cardList: cardList,
         loading: false,
       });
+      console.log(this.data.questionDataList, "questionDataList");
     });
-    // loadings.value = false
   },
   // 鑾峰彇缁勫嵎缁撴灉
   async getEduQuizConfig() {
@@ -1857,6 +1959,9 @@
           Embedded_QuestionBank_Difficulty: [],
         },
       };
+      if (this.data.storeInfo) {
+        query.storeInfo = this.data.storeInfo
+      }
       await app.MG.store.getProductDetail(query).then((res) => {
         res.datas.cmsDatas[0].datas.forEach((item, index) => {
           // 寰幆questionList,缁欐瘡棰樿祴鍊煎垎鏁�
@@ -2011,6 +2116,7 @@
     }
     this.setData({
       loading: false,
+      showId: this.data.questionDataList[0].id
     });
   },
   // 鑾峰彇缁勫嵎鏁版嵁
@@ -2140,7 +2246,6 @@
 
   // 瀵屾枃鏈鐞�
   formatRichText(html) {
-    console.log(html);
     let newContent = html.replace(/<img[^>]*>/gi, function (match, capture) {
       match = match
         .replace(/style="[^"]+"/gi, "")
@@ -2174,4 +2279,250 @@
     );
     return newContent;
   },
-});
\ No newline at end of file
+  // 鏁欏浜掑姩妯″紡鐩稿叧
+  // 鑾峰彇鐝骇鍒楄〃
+  getCurrentClassList() {
+    const query = {
+      start: 0,
+      size: 999,
+      infoTypes: [],
+    }
+    app.MG.identity.joinedGroupByList(query).then((res) => {
+      res.datas.forEach(async item => {
+        item.topicId = null
+        const data = await this.getTopicInfo(item.id)
+        if (data) {
+          item.topicId = data.id
+        }
+      })
+      console.log('鐝骇', res)
+      if (res.datas.length) {
+        this.setData({
+          classList: res.datas
+        })
+        // 鍒ゆ柇鐝骇 鏄惁鎵�灞炰簬璇ヤ功
+        const classData = res.datas.find(item => item.linkProductDto.product.id == this.data.bookId)
+        if (classData) {
+          if (classData.userState == 'Normal') {
+            // 鍔犲叆鐝骇
+            this.setData({
+              joinGroup: true
+            })
+          } else if (classData.userState == 'WaitValid') {
+            this.setData({
+              submitStatus: true
+            })
+            // 瀹℃牳涓�
+            wx.showModal({
+              title: '鎻愮ず',
+              content: '璇风瓑寰呰�佸笀瀹℃牳鍔犲叆鐝骇鍚庣瓟棰�',
+              confirmColor: "#ff6c00",
+              complete: (res) => {
+                if (res.cancel) {
+                  wx.navigateBack()
+                }
+                if (res.confirm) {
+                  wx.navigateBack()
+                }
+              }
+            })
+          } else {
+            // 鎷掔粷
+            this.setData({
+              visible: true
+            })
+          }
+        } else {
+          // 鏈姞鍏ョ彮绾�
+          this.setData({
+            visible: true
+          })
+        }
+      } else {
+        this.setData({
+          visible: true,
+        })
+      }
+
+    })
+  },
+  // 鍔犲叆鐝骇
+  joinClass(e) {
+    wx.showLoading({
+      title: '鍔犺浇涓�'
+    })
+    const data = {
+      refCode: e.detail.value
+    }
+    app.MG.identity.joinGroupByRefCode(data).then((res) => {
+      wx.hideLoading()
+      if (res == '缁勪笉瀛樺湪') {
+        wx.showToast({
+          icon: 'error',
+          title: '鏃犳晥鐨勭彮绾�',
+        })
+      } else if (res == '缁勬垚鍛樻暟閲忓凡鏈�澶�,涓嶈兘鍔犲叆') {
+        wx.showToast({
+          icon: 'error',
+          title: '鐝骇鎴愬憳鏁伴噺宸叉渶澶э紝涓嶈兘鍔犲叆',
+        })
+      } else if (res == '宸茬粡鐢宠杩囧姞鍏ユ缁�') {
+        wx.showToast({
+          icon: 'error',
+          title: '宸茬粡鐢宠杩囧姞鍏ユ鐝骇',
+        })
+      } else {
+        wx.showToast({
+          icon: "success",
+          title: '宸叉垚鍔燂紝绛夊緟瀹℃牳涓�...',
+        })
+        this.setData({
+          visible: false
+        })
+        this.getCurrentClassList()
+      }
+    })
+  },
+  // 鑾峰彇鐝骇topic
+  async getTopicInfo(classId) {
+    let query = {
+      classId,
+      refCodes: ["TeachInteraction"]
+    }
+    const res = await app.MG.edu.getClassTopic(query)
+    return res[0] ?? null
+  },
+  // 鑾峰彇鏃ф暀瀛︿簰鍔ㄧ瓟棰樻暟鎹�
+  getinteractionInfo() {
+    app.MG.identity
+      .getUserKey({
+        domain: "interactionData",
+        keys: [this.data.productLinkPath],
+      })
+      .then((res) => {
+        if (res.length) {
+          let value = JSON.parse(res[0].value);
+          const scoreData = value.dataList.find(item => item.name == "瀹㈣棰樺緱鍒�" && item.path == this.data.productLinkPath)
+          this.setData({
+            currentIndex: value.currentIndex ? value.currentIndex : 0,
+            subjectiveNum: scoreData ? scoreData.score : 0,
+            submitStatus: true
+          });
+          // 鎼哄甫绛旈璁板綍 鑾峰彇棰樼洰
+          this.getQuestionList(value.dataList);
+        } else {
+          this.getQuestionList(); // 鑾峰彇棰樺簱棰樼洰
+          this.setData({
+            showDialog: true
+          })
+        }
+      });
+  },
+  // 鎻愪氦鏁欏浜掑姩绛旈鏁版嵁
+  setinteractionInfo() {
+    const list = []
+    this.data.cardList.forEach(item => {
+      list.push({
+        catalogName: item.catalogName,
+        path: item.path,
+        infoList: item.infoList.map((citem) => ({
+          id: citem.id,
+          userAnswer: citem.userAnswer
+        }))
+      })
+    })
+    list.push({
+      name: "瀹㈣棰樺緱鍒�",
+      score: this.data.subjectiveNum,
+      path: this.data.productLinkPath,
+    })
+    app.MG.identity
+      .setUserKey({
+        setKeyRequests: [{
+          domain: "interactionData",
+          key: this.data.productLinkPath,
+          value: JSON.stringify({
+            currentIndex: this.data.currentIndex,
+            dataList: list
+          }),
+        }, ],
+      })
+      .then((res) => {});
+  },
+  // 澶勭悊鏁欏浜掑姩绛旈 
+  handleClassQuestion() {
+    const flag = this.data.questionDataList.some(item => !item.userAnswer)
+    if (flag) {
+      // 娌″仛瀹岋紝淇濆瓨鍗冲彲
+      const isAnswer = this.data.questionDataList.some(item => item.userAnswer)
+      if (isAnswer) this.setinteractionInfo()
+    } else {
+      // 鍋氬畬浜嗕笖鍔犲叆浜嗙彮绾э紝鎻愪氦鍒癿essage
+      if (this.data.classList.length && this.data.joinGroup) {
+        this.data.classList.forEach(item => {
+          if (item.linkProductDto.product.id == this.data.bookId && item.topicId)
+            this.newTopicMessage(item.topicId)
+        })
+        this.setinteractionInfo()
+      } else {
+        // 鍋氬畬浜嗭紝娌″姞鍏ョ彮绾�
+        this.setinteractionInfo()
+      }
+      this.setData({
+        isShowDialog: true
+      })
+    }
+    this.setData({
+      submitStatus: true
+    })
+  },
+
+  // 鏂板缓topicMessage
+  newTopicMessage(topicId) {
+    let content = []
+    for (let cindex = 0; cindex < this.data.questionDataList.length; cindex++) {
+      const citem = this.data.questionDataList[cindex];
+      content.push({
+        cmsItemId: citem.id,
+        answer: citem.userAnswer,
+        state: citem.questionType == 'shortAnswer' ? 'none' : citem.isRight,
+        type: citem.questionType
+      })
+      const userInfo = JSON.parse(wx.getStorageSync(app.config.userInfoKey))
+      const data = {
+        description: '',
+        icon: '',
+        state: 'Normal',
+        topicIdOrRefCode: String(topicId),
+        name: this.data.answerTitle,
+        content: JSON.stringify({
+          bookId: this.data.bookId,
+          userName: userInfo.name ? userInfo.name : userInfo.nickName ? userInfo.nickName : '-',
+          path: this.data.productLinkPath,
+          content
+        }),
+        type: 'Normal',
+        cmsTypeRefCode: '',
+        newDataListRequest: []
+      }
+      app.MG.ugc.newTopicMessage(data).then((res) => {
+        if (res) {
+          this.setData({
+            isShowDialog: true
+          })
+        }
+      })
+    }
+  },
+  // 鍒犻櫎鏁欏浜掑姩绛旈璁板綍
+  delinteractionInfo(callback) {
+    app.MG.identity
+      .delUserKey({
+        domain: 'interactionData',
+        keys: [this.data.productLinkPath]
+      })
+      .then((res) => {
+        if (callback) callback()
+      })
+  }
+})
\ No newline at end of file

--
Gitblit v1.9.1