QYF-GitLab1
2025-08-01 f6088ce5e3086edc3bd669265f07c7624475d0f7
packageBookService/pages/bookServices/examination/examination.js
@@ -628,8 +628,42 @@
      showDialog: false,
    });
  },
  // 初始化函数
  async init() {
    // 获取图书详情,判断题库是否购买
    const query = {
      path: "*",
      queryType: "*",
      productId: this.data.bookId,
      favoriteTypes: "FavoriteBookCity",
      itemFields: {
        "SysType=": "CmsFolder",
      },
      coverSize: {
        height: 300,
      },
      fields: {},
    };
    const res = await app.MG.store.getProductDetail(query)
    const saleData = res.datas.saleMethod.find(item => item.Name.includes('题库'))
    if (saleData && !res.datas.purchasedSaleMethodIdList.includes(saleData.Id)) return wx.showModal({
      title: '提示',
      content: '请先激活或购买题库再答题',
      confirmColor: "#ff6c00",
      cancelColor: "#949494",
      editable: false, //是否显示输入框
      showCancel: false,
      complete: () => {
        this.setData({
          submitStatus: true
        })
        wx.setStorageSync('tabValue', 'questionBank')
        wx.redirectTo({
          url: `/packageBookService/pages/bookServices/detail/index?id=${res.datas.id}&name=${res.datas.name}`,
        })
      }
    })
    this.setData({
      loading: true,
      subjectiveTotal: 0,
@@ -917,14 +951,15 @@
          let oldObj = "";
          if (oldList)
            oldObj = oldList.find((oldItem) => oldItem.id == item.id);
          // console.log(item.Embedded_QuestionBank_Stem, 111)
          let questionObj = {
            // num: index, // 题号
            id: item.id,
            type: pathitem.name,
            stem: item.Embedded_QuestionBank_QuestionType == "completion" ?
            stem: item.Embedded_QuestionBank_Stem ? item.Embedded_QuestionBank_QuestionType == "completion" ?
              JSON.parse(item.Embedded_QuestionBank_Stem)
              .stemTxt.replaceAll("<vacancy>", ",input,")
              .split(",") : JSON.parse(item.Embedded_QuestionBank_Stem), // 题干
              .split(",") : JSON.parse(item.Embedded_QuestionBank_Stem) : '-', // 题干
            answer: item.Embedded_QuestionBank_Answer, // 答案
            option: item.Embedded_QuestionBank_Option ?
              JSON.parse(item.Embedded_QuestionBank_Option) : "", // 选择题选项
@@ -957,18 +992,37 @@
          }
          // 填空题改造
          if (questionObj.questionType == "completion") {
            let c = [];
            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 (item != 'input') {
                item.split("").map(citem => {
                  const obj = {
                    type: 'txt',
                    text: citem
                  }
                  c.push(obj)
                })
              } else {
                const obj = {
                  type: "input",
                  num: index
                }
                if (!oldObj) questionObj.userAnswer[index] = "";
                index++;
                c.push(obj)
              }
              // if (item == "input") {
              //   questionObj.stem[i] = {
              //     num: index,
              //     data: "input",
              //   };
              //   if (!oldObj) questionObj.userAnswer[index] = "";
              //   index++;
              // }
            }
            questionObj.customArr = c;
          }
          // 题干富文本处理
          if (questionObj.stemStyle == "RichText") {
@@ -1453,7 +1507,7 @@
            questionObj.questionType == "completion" ||
            questionObj.questionType == "multipleChoice"
          ) {
            console.log(questionObj.answer, "111")
            // console.log(questionObj.answer, "111")
            try {
              questionObj.answer = JSON.parse(questionObj.answer).toString();
            } catch (error) {
@@ -1786,7 +1840,7 @@
          if (src) {
            questionObj.src = src
            questionObj.stem.stemTxt = this.removeVideoAndAudioTags(questionObj.stem.stemTxt)
            console.log('题干', questionObj.stem.stemTxt);
            // console.log('题干', questionObj.stem.stemTxt);
          }
        }
        if (item.Embedded_QuestionBank_QuestionType == "judge") {
@@ -1833,7 +1887,7 @@
        cardList: cardList,
        loading: false,
      });
      console.log(this.data.questionDataList, "questionDataList");
      // console.log(this.data.questionDataList, "questionDataList");
    });
  },
  // 获取组卷结果
@@ -2185,7 +2239,7 @@
              JSON.parse(res[0].value).time : 1000,
            "mockData.answer": JSON.parse(res[0].value).answerData,
          });
          console.log(JSON.parse(res[0].value));
          // console.log(JSON.parse(res[0].value));
          data = JSON.parse(res[0].value).answerData;
        }
      });
@@ -2240,7 +2294,7 @@
        this.setData({
          saveTime: 20,
        });
        console.log("模考答题数据已记录");
        // console.log("模考答题数据已记录");
      });
  },
@@ -2295,7 +2349,7 @@
          item.topicId = data.id
        }
      })
      console.log('班级', res)
      let isJoinClass = wx.getStorageSync('joinClass')
      if (res.datas.length) {
        this.setData({
          classList: res.datas
@@ -2328,20 +2382,28 @@
            })
          } else {
            // 拒绝
            if (!isJoinClass) {
              this.setData({
                visible: true
              })
            }
          }
        } else {
          // 未加入班级
          if (!isJoinClass) {
            this.setData({
              visible: true
            })
          }
        } else {
          // 未加入班级
        }
      } else {
        if (!isJoinClass) {
          this.setData({
            visible: true
          })
        }
      } else {
        this.setData({
          visible: true,
        })
      }
    })
@@ -2460,8 +2522,9 @@
      // 做完了且加入了班级,提交到message
      if (this.data.classList.length && this.data.joinGroup) {
        this.data.classList.forEach(item => {
          if (item.linkProductDto.product.id == this.data.bookId && item.topicId)
          if (item.linkProductDto.product.id == this.data.bookId && item.topicId) {
            this.newTopicMessage(item.topicId)
          }
        })
        this.setinteractionInfo()
      } else {
@@ -2501,7 +2564,7 @@
          path: this.data.productLinkPath,
          content
        }),
        type: 'Normal',
        type: 'Public',
        cmsTypeRefCode: '',
        newDataListRequest: []
      }